[英]Why can't I specify a result type for an anonymous function in Scala?
编辑:找到答案,请参阅文章结尾。
不断出现错误,发现这是因为我试图将结果类型添加到lambda。 这可以
(p: Int) => p
而
(p: Int): Int => p
引起投诉。 我很惊讶-为什么不允许呢? 毕竟,如果我分配了lambda,我可以在变量中指定一种类型(为了便于阅读,我将其放在括号中):
val f2: (Int => Int) = (p: Int) => p
但当时我还不如def
它:
def f2(p: Int): Int = p
禁止使用它不会带来任何明显的危害,但这是意外的。 有什么想法吗?
编辑:给我扔石头,您可以:
(p: Int) => p : Int
好,回答。 以前从未见过。 我想我将在这里留给后代参考。
根据0__的建议,答案是给lambda的主体加上类型的后缀,而不是像def
语法所建议的那样将其放在参数列表之后。
我正在使用的实际示例用于解构列表并返回前两个项目的元组:
(p: List[Int]): Tuple2[Int, Int] => { val x :: y :: rest = p; (x, y) }
失败,但这成功
(p: List[Int]) => { val x :: y :: rest = p; (x, y) }: Tuple2[Int, Int]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.