2

まず、これ:

"1 2".split(" ").toSet

この:

Set("1", "2")

どちらも同じものに評価されます。つまり、

res1: scala.collection.immutable.Set[String] = Set(1, 2)

なぜ、私がするとき:

Set("1", "2") map (_.toInt)

私はこれを期待どおりに取得します:

res2: scala.collection.immutable.Set[Int] = Set(1, 2)

しかし、私がこれを行うと:

"1 2".split(" ").toSet map (_.toInt)

私が得た:

<console>:12: error: missing parameter type for expanded function ((x$1) => x$1.toInt)
   "1 2".split(" ").toSet map (_.toInt)

確認しましたが、括弧を追加しても問題は解決しません。

4

2 に答える 2

1

toSet を使用する場合の型推論の理由であるため、チェーン呼び出しまたは呼び出しを分割するための型ヒントが必要です。ここで詳細を確認できますhttps://issues.scala-lang.org/browse/SI-7743https://issues.scala-lang.org/browse/SI-9091

于 2016-12-05T13:31:12.950 に答える
0

コードは次のようになります。

"1 2".split(" ").toSet map (x: String => x.toInt)

ここでは、Set に文字列が含まれていることを明示的に指定しています。

チェーン呼び出しには、コンパイラーがパラメーターの型を提供することを期待する Scala でこの問題があります。

于 2016-12-05T14:47:19.230 に答える