3

この場合、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

それは正確にはどういう意味ですか?

4

2 に答える 2

8

括弧は、パラメーターのタイプが終了する場所を示しています。=>シンボルはscala型(関数型を示す)で有効であるため、そこにあるだけでは型が終了したわけではあり=>ません。このことを考慮:

List(Map(1->2)).filter((x: Int => Int) => x(1) == 2)

括弧は、最初の括弧=>がの型の一部でxあり、2番目の括弧が関数を定義していることを明確に示しています。

2番目の例では、に型がないxため、の役割についてあいまいさはありません=>

于 2013-01-02T22:09:46.660 に答える
1

x: Int => Int--xは型の関数ですInt => Int

(x:Int) => ...--xは関数パラメーターです

于 2013-01-02T22:26:41.447 に答える