我有一個Option
:Scala:我可以將選項轉換爲可變參數嗎?
val myOption: Option[Int] = fooBar()
而這需要一個可變參數PARAM的方法:
def myMethod(a: String, b: Int*) = {...}
有什麼辦法打發選項的方法作爲可變參數PARAM?即如果選項是Some(3)
則傳遞3,如果是None
,則不傳遞任何內容。
的答案試驗,以 scala: How to pass an expanded list as varargs into a method?我試着輸入明確的說法:
myMethod("xyz", myOption: _*)
但編譯器抱怨說,它需要一個Seq[Int]
。看起來Option
沒有實現Seq
,並且沒有預定義的隱式轉換。
鑑於編譯器想要一個Seq
,我當然可以通過myOption.toList: _*
,但是有沒有更好的方法?
你的方法需要什麼'Seq'?有可能你可以用更普遍的收集操作(比如foreach,地圖,過濾器等)編寫它。 – schmmd
@schmmd在這種特殊情況下,'myMethod'是第三方庫的一部分,所以我別無選擇,只能使用可變參數。它是我自己的代碼,我可能會重寫這個方法來取代'Int *'而不是'Int *',並保存所有這些麻煩! –