在这种情况下,为什么我需要 x:Int 周围的括号:
List(1,2,3,4,5).filter((x:Int) => x > 3)
但在这种情况下不是 x :
List(1,2,3,4,5).filter(x => x > 3)
如果我尝试:
List(1,2,3,4,5).filter(x:Int => x > 3)
我得到:
identifier expected but integer literal found
这到底是什么意思呢?
在这种情况下,为什么我需要 x:Int 周围的括号:
List(1,2,3,4,5).filter((x:Int) => x > 3)
但在这种情况下不是 x :
List(1,2,3,4,5).filter(x => x > 3)
如果我尝试:
List(1,2,3,4,5).filter(x:Int => x > 3)
我得到:
identifier expected but integer literal found
这到底是什么意思呢?
括号显示参数类型的结束位置。由于该=>
符号在 scala 类型中有效(表示函数类型),因此只有=>
存在并不意味着该类型已结束。考虑一下:
List(Map(1->2)).filter((x: Int => Int) => x(1) == 2)
括号清楚地表明第一个=>
是类型的一部分,x
第二个是定义函数。
在您的第二个示例中,没有类型 on x
,因此关于=>
.
x: Int => Int
- x 是类型的函数Int => Int
(x:Int) => ...
- x 是函数参数