问题标签 [function-literal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3498 浏览

scala - 关于 Scala 中占位符的问题

考虑 Scala 中的以下定义:

代码将函数文字 _ + 1 的字符串表示分配给 f,这是很自然的,除了这不是我想要的。我打算定义一个接受 int 参数的函数,将其递增 1,并返回其字符串格式。

为了消除歧义,我必须编写一个带有显式参数的 lambda 表达式:

那么我可以得出结论,占位符语法不适合复杂的函数文字吗?还是有一些规则说明函数文字的范围?似乎占位符不能嵌套在函数文字中的括号中(定义其类型所需的除外)

0 投票
6 回答
13339 浏览

javascript - JavaScript 中函数字面量的确切含义

在 JavaScript 中,既有对象字面量,也有函数字面量。

对象字面量:

函数字面量:

字面意思是什么?我们可以说 Java 有方法字面量吗?

0 投票
3 回答
26968 浏览

scala - 匿名函数的参数类型必须是完全已知的。(SLS 8.5)

我有一个函数文字

这会导致错误消息

我查看了SLS 8.5,但没有找到解释。

如果我自己将功能扩展为

错误消失了。

(a) 为什么这是一个错误?

(b) 我能做些什么来解决它?

我尝试了明显的修复,即: QualifiedType在模式和 => 之间添加,但这是一个语法错误。


我注意到的一件事是上下文有所不同。如果我使用函数文字作为声明为期望 a 的函数的参数QualifiedType => B,则没有错误。但是,如果我将它用作期望 a 的函数的参数A => B,则会出现错误。我希望这里发生的事情是,由于可以想象该模式可以应用于类型是 QualifiedType 的超类型的对象,编译器不愿意在不保证函数不会应用于的情况下分配明显的类型任何不是 QualifiedType 的东西。我真正想要的是能够编写{QualifiedType( preds, ty) => ...} 并使其与 Haskell 具有相同的含义\QualifiedType(preds,ty) -> ...

0 投票
2 回答
12912 浏览

scala - 多行函数文字作为 Scala 中的参数

我一直想知道为什么有时使用函数文字我们可以忽略大括号,即使是多个语句。为了说明这一点,多行函数字面量的语法是用花括号将语句括起来。像这样,

但是,当您将其传递给单参数函数时,您可以忽略函数文字所需的大括号。

所以对于给定的函数 f,

你可以像这样调用 f(),

或者,当您在函数调用中使用大括号而不是括号时,您可以从函数文字中删除内部大括号。所以下面的代码也可以工作,

上面的代码更具可读性,我注意到很多示例都使用这种语法。但是,是否有任何我可能遗漏的特殊规则来解释为什么它按预期工作?

0 投票
1 回答
744 浏览

javascript - 淘汰赛 - 未通过包装函数传递 keyCode 属性

我已经将我的 Knockout 绑定设置为有一个按键事件,因为我希望Enter在输入字段上进行检测。

如果我有以下情况:

我的视图模型有

然后 keyCode 按预期显示。

但是,我希望向函数传递一个附加参数KeyPress,所以按照这里的示例,我现在有了

我相应的功能现在变成了

现在,该keyCode属性始终返回 0。我可以在event对象内部看到charCode为每个按键设置了该属性,但不是该keyCode属性(该charCode属性没有多大用处,因为所有不可打印的字符都是 0)。

我也可以看到该event对象有一个originalEvent属性,但是keyCode这里的in是一样的,0。

那么谁能告诉我如何让keyCode属性通过函数文字传播?

这是一个演示它的 JsFiddle

0 投票
2 回答
384 浏览

scala - 包装部分应用的构造函数的 Scala 类 - 如何使用它来创建 API 方法?

我正在尝试创建一个简单的 api 来处理时间间隔。(我知道joda time,我不想重新发明它。这是一个练习)。

我想要实现的是:

(1)


(2)


我已经设法实现(1),如下所示:(忽略toString,Ordered trait,aso)


但是,我不知道如何实现(2)(即:Interval.forMinutes)。

似乎无法解决这个问题。
这个“HalfInterval”包装器是否Time => Interval有意义?
我根据经验设计了它——只是为了让from(..).to(..)调用按计划工作——而不是考虑到一些功能概念模型。
有没有更好的方法来实现这个api?

谢谢

0 投票
1 回答
167 浏览

scala - 使用函数文字进行类型推断

我目前正在尝试解决一些 Scala 问题集以了解该语言。我遇到了问题 11,我的解决方案无法编译。我的问题是:为什么这在 Scala 中是非法的?

IntelliJ 对此定义很满意,但编译器抱怨:

扩展函数缺少参数类型
匿名函数的参数类型必须是完全已知的。(SLS 8.5)

预期类型是:?

我真的不明白这条消息试图告诉我什么。scala 编译器不能推断出的类型ls吗?当我通过 指定类型时ls: List[A],问题仍然存在。

ls在这种情况下:为什么我可以在使用花括号时指定参数的类型,而{ }在使用括号时却不能( )?直到今天,我一直在寻找一个很好的资源来解释 Scala 的不同之处。到目前为止,我相信只有在使用字面量通过 `case和其他一些极少数情况下创建偏函数时才会产生真正的不同。

感谢帮助!

0 投票
1 回答
133 浏览

scala - 由 val 和 def 引用的函数字面量

我试图了解这两种引用/定义Function Literal(引用anonymous function)方法之间的关键区别:

经过val

并且通过def

在使用方面似乎几乎相同。我可以传递v2或传递f2给接受(Int) => Int作为参数的函数。将参数传递给它的..

我猜还是 v2 的情况下它创建了一个Function1引用该对象的Function1对象.. 像proxy?

好的..我的问题是:第一种和第二种方法的优缺点是什么?

它是由 定义的def,它还在Function Literal吗?

0 投票
4 回答
2442 浏览

function - Scala函数文字中的`return`

我正在尝试做这样的事情:

但是,我的 IDE 对Return statement outside method definition. 那么如何在scala的函数文字中明确给出return语句?

0 投票
1 回答
325 浏览

scala - AspectJ 不能在 Scala 函数文字上工作?

我有以下 scala 类和带注释的 aspectj 类:

功能 bar 运作良好,但功能 foo 没有。没有任何错误,似乎函数“foo”的执行没有被捕获。

[AppClassLoader@14dad5dc] 信息 AspectJ Weaver 版本 1.8.5 构建于 2015 年 1 月 29 日星期四 01:03:58 GMT

[AppClassLoader@14dad5dc] 信息注册类加载器 sun.misc.Launcher$AppClassLoader@14dad5dc

[AppClassLoader@14dad5dc] 使用配置的信息 /Users/grant/programming/java/workspace/playasjectj/bin/META-INF/aop.xml

[AppClassLoader@14dad5dc] info register aspect playasjectj.EntityAspect before advice foo:我们是冠军

任何人都知道如何解决这个问题?我想这与scala如何将元组转换为java类有关