const actionsMap = {
[GET_USER]: (state, action) => ({ post: action.msg })
};
我偶然发现了这个代码。我一直在使用{}格式的箭头函数,这个()包装器是什么意思?
从https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions#Returning_object_literals
返回对象文字
请记住,使用简明语法参数返回对象文字=
var func = () =
这是因为大括号({})中的代码被解析为一系列语句(即foo被视为标签,而不是对象文本中的键)。
请记住将对象文字包装在括号中:
var func = () =
所以如果要返回对象文字,请将其包装为()
这是ES6箭头函数。更多阅读:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions
ES6
(状态、动作)=
ES5
function(state, action) {
return { post: action.msg };
}
对于箭头函数,可以使用单个语句或块作为函数体。这两个是等同的:
() => foo
() => {
return foo;
}
在您的示例中,如果lambda被定义为()=
function () {
post: action.msg
}
这是一个命名标签和属性访问,在这里没有多大意义。通过在圆括号中包装,您向解析器暗示它是一个要计算的表达式,并且单表达式主体上的胖箭头函数规则开始生效,使其等同于:
function () {
return {post: action.msg};
}
要在需要执行两个相关操作(在map/reduce算法中偶尔有用)时绕过单个表达式规则,可以使用parens对一对表达式进行分组:
foo.reduce((p, c) => (c.counted = true, p += c.value));
这将设置
c的
属性,然后将c.value
添加到p
并将p=c.value
的结果返回为newp
的值。
括号在ECMAScript中包装表达式,并可使用逗号运算符对多个表达式进行分组。计算组时返回最后一个表达式的结果。
例如:
var i = 0, j = 0;
console.log((j += 10, i += 2), j);
将打印
2 10
,因为j
在()
组中递增,以后再打印。
问题内容: 我正在尝试运行一些Android测试,但是,编译器抱怨存在多个dex文件。 所以我试图过滤重复的依赖项: 但是我得到以下输出: 我对箭头(->)的含义感到困惑。他们的意思是什么? 问题答案: 这意味着,依赖图包含相同的多个依赖和而不同的版本如。Gradle尝试自动解决冲突的版本- 默认情况下,选择最新版本。左侧是请求的版本,右侧是将要选择的版本。在这里可以找到类似的问题。
我知道<代码> 代码如下:
问题内容: 我之前阅读过一些Java 8教程。 现在,我遇到以下主题: Java是否支持Currying? 在这里,我看到以下代码: 我了解此示例包含2个元素,但无法理解其构造: 根据表达式的左侧,该行应实现以下功能: 在此之前,我只遇到一个箭头就遇到了lambda。 问题答案: 如果将其表示为非速记lambda语法或pre-lambda Java匿名类语法,则更清楚发生了什么… 原来的问题。为什
我以前读过几本Java8教程。 现在我遇到了以下主题:java支持咖喱吗? 在这里,我看到以下代码: 我知道这个例子总结了两个元素,但我无法理解其结构: 根据表达式的左边部分,此行应实现以下功能: 在此之前,我只遇到过只有一支箭的Lambdas。
我正在尝试运行一些Android测试,然而,编译器抱怨多个dex文件存在。 因此,我正在尝试筛选重复的依赖项: 然而,我得到以下输出: 我不明白箭头(->)的意思。他们是什么意思?
问题内容: 我正在阅读该package的代码,然后想知道其工作原理。 我发现代码如下: 因此,我找到了- 的定义,因为它没有函数体,这很奇怪。 我想知道: 真正的代码在哪里 为什么这里可以存在“抽象方法” 为什么Go的作者这样写 谢谢! 问题答案: 1)函数定义在这里: 2)函数声明: 函数声明可以省略主体。这样的声明为Go外部实现的功能(例如汇编例程)提供了签名。 3)并非每种编程语言都可以完全