1

奇妙に思えるかもしれませんが、これは機能しません:

scala> (1 to 6).toSet map (_ / 2)
<console>:8: error: missing parameter type for expanded function ((x$1) => x$1.$div(2))
              (1 to 6).toSet map (_ / 2)
                                  ^

ただし、to[Set]代わりに使用すると、次のtoSetことが行われます。

scala> (1 to 6).to[Set] map (_ / 2)
res0: scala.collection.immutable.Set[Int] = Set(2, 0, 3, 1)

は。o_O

また、これが機能することを考慮してください:

scala> val s = (1 to 6).toSet; s map (_ / 2)
s: scala.collection.immutable.Set[Int] = Set(5, 1, 6, 2, 3, 4)
res1: scala.collection.immutable.Set[Int] = Set(2, 0, 3, 1)

@AlexIvRange.Inclusiveで提案されているように、一次型であるため、これも次のようには機能しないことに注意してList[Int]ください。

scala> List(1, 2, 3, 4, 5, 6).toSet map (_ / 2)
<console>:8: error: missing parameter type for expanded function ((x$1) => x$1.$
div(2))
              List(1, 2, 3, 4, 5, 6).toSet map (_ / 2)
                                                ^

そして以前と同様に、これは機能します:

scala> val s = List[Int](1, 2, 3, 4, 5, 6).toSet; s map (_ / 2)
s: scala.collection.immutable.Set[Int] = Set(5, 1, 6, 2, 3, 4)
res3: scala.collection.immutable.Set[Int] = Set(2, 0, 3, 1)

編集: .toSet で作成されたセットで型推論の複製が失敗しますか?

4

1 に答える 1