私はOption
を持っている:Scala:Optionをvarargsに変換できますか?
val myOption: Option[Int] = fooBar()
そして、可変引数のparamを取る方法:
def myMethod(a: String, b: Int*) = {...}
は、可変引数のparamとしてメソッドにオプションを渡す方法はありますか?すなわち、オプションがSome(3)
であれば3を渡し、それがNone
ならば何も渡さない。
myMethod("xyz", myOption: _*)
しかし、コンパイラは、それはSeq[Int]
を必要と文句を言い:私は明示的に引数を入力しようとした scala: How to pass an expanded list as varargs into a method?への答えを試す
。 Option
はSeq
を実装しておらず、暗黙の暗黙の変換はありません。
コンパイラがSeq
を望んでいるとすれば、私はもちろんmyOption.toList: _*
を渡すことができますが、より良い方法がありますか?
あなたのメソッドはどのような 'Seq'を必要としますか? – schmmd
@schmmdこの特定のケースでは、 'myMethod'はサードパーティ製のライブラリの一部ですので、私は選択肢がありませんが、使用することはできません。(例えばforeach、map、filterなど) varargs。それは私自身のコードだったので、おそらく 'Int *'の代わりに 'Iterable [Int]'メソッドを書き直して、この問題をすべて解消するでしょう! –