3

私が知っていること:

scala> def fx(s: String *) = s.foreach(println)
fx: (s: String*)Unit

scala> val lst = List("1","2","3")
lst: List[java.lang.String] = List(1, 2, 3)

scala> fx(lst:_*)
1
2
3

私が知りたいこと:

  1. どうすれば実装でき:_*ますか? 地図で?
  2. それに代わる他の方法はありますか?
  3. :_* は Scala でどのように定義されていますか?

ありがとうございました

4

2 に答える 2

8

要素のシーケンスを既に提供していることをコンパイラに示すのは、構文糖衣に過ぎず、それ以外の「実装」はありません。詳細については、Scala 言語仕様(§6.6、p. 78)を参照してください。

于 2012-06-06T06:15:39.977 に答える
1

可変引数を取るメソッド:_*の場合、コレクションのメンバーを可変引数として渡す必要があることを意味します。

上記のあなたのものに対応する可変引数の例:

scala> fx("a", "b", "c")
a
b
c

実装できません -- これは言語機能です。varargs メソッドを呼び出すコンテキスト以外では意味がありません。

于 2012-06-06T18:15:42.103 に答える