可変数の引数をとる関数が与えられます。Scala:var-args関数にSeqを渡します。
def foo(os: String*) =
println(os.toList)
どのように関数に引数のシーケンスを渡すことができますか?私は書いています:
val args = Seq("hi", "there")
foo(args)
明らかに、これは動作しません。
可変数の引数をとる関数が与えられます。Scala:var-args関数にSeqを渡します。
def foo(os: String*) =
println(os.toList)
どのように関数に引数のシーケンスを渡すことができますか?私は書いています:
val args = Seq("hi", "there")
foo(args)
明らかに、これは動作しません。
foo(args:_*)
です。シーケンスを単一の引数として適用する代わりに、シーケンス内の各要素が引数として使用されます。
上記の関数 '' 'args:_ *'には、 '' – Richeek
これを透過的にするapiを提供する一つの方法は、 'foo'と同じ名前のプロキシ関数を書くことです。そうすれば、元の 'foo'呼び出しは、ユーザコードが心配することなく動作します。しかし、もし 'foo'が' String'のようなプリミティブ型ではなく 'Seq'のようなコレクションを必要とするならば、スカラーのコレクションの不変性はあなたのAPIの正当な使用を妨げるでしょう。あたかも可変引数リストと標準ライブラリコレクションが、バニラを越えた相互利用のために設計されていないかのように。 – matanster
@Richeek残念ながら、いいえ。 – Malcolm
も参照してください:http://stackoverflow.com/questions/1008783/using-varargs-from-scala –