当我编写像foo.map(case Foobar(x,y) => something)这样的代码时,我得到了一个错误。后来我发现我必须使用大括号来包装匿名函数(case Foobar(x,y) => something)。下面是scala REPL中的一个演示:
scala> val a = List(((1, 2),3), ((4,5),6))
a: List[((Int, Int), Int)] = List(((1,2),3), ((4,5),6))
scala> a.map({case ((a,b),c) => (a,b,c)})
res0: List[(Int, Int, Int)] = List((1,2,3), (4,5,6))
scala> a.map(case ((a,b),c) => (a,b,c))
<console>:1: error: illegal start of simple expression
a.map(case ((a,b),c) => (a,b,c))请注意,与上面的命令相比,在最后一个命令中删除了大括号。
那么,这种行为的原因是什么呢?为什么scala编译器不能推断没有大括号的匿名函数?
https://stackoverflow.com/questions/41453574
复制相似问题