Scala中函数对象的vararg发生错误?
发布时间:2020-12-16 09:34:50 所属栏目:安全 来源:网络整理
导读:为什么这不行? val f = (args: Int*) = args.sumerror: ')' expected but identifier found.val f = (args: Int*) = args.sum ^ 然而这样做完全正常 def sum(args: Int*) = args.sumval f = sum _ 这样做 val f: (Int*) = Int = args = args.sum 顺便说一句
为什么这不行?
val f = (args: Int*) => args.sum error: ')' expected but identifier found. val f = (args: Int*) => args.sum ^ 然而这样做完全正常 def sum(args: Int*) = args.sum val f = sum _ 这样做 val f: (Int*) => Int = args => args.sum 顺便说一句。我正在使用scala 2.9.1 解决方法
我不是规范阅读方面的专家,但它看起来像varargs匿名函数不支持语法。
比较Language Spec中功能声明与匿名函数的语法 从4.6函数声明和定义 ParamType ::= Type | ‘=>’ Type | Type ‘*’ 6.23匿名函数 Binding ::= (id | ‘_’) [‘:’ Type] 我不知道那是什么原因。似乎有理由,但没有一个可以很容易地解释。 Martin Odersky评论说要为匿名函数添加varargs的请求:“这首先看起来很诱人,但它会拖累很多复杂性(你只需要相信我一个)。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |