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