我只注意到這個結構上的某個地方網站:語法糖:_ *用於治療SEQ方法參數
val list = List(someCollection: _*)
是什麼_*
意思?這是一個方法調用的語法糖嗎?我的自定義類應該滿足什麼約束,以便它可以利用此語法糖?
我只注意到這個結構上的某個地方網站:語法糖:_ *用於治療SEQ方法參數
val list = List(someCollection: _*)
是什麼_*
意思?這是一個方法調用的語法糖嗎?我的自定義類應該滿足什麼約束,以便它可以利用此語法糖?
這是用於分解數組的scala語法。某些函數需要可變數量的參數,並且要傳入數組,需要將: _*
附加到數組參數。
通常,:
表示法用於類型歸屬,強制編譯器將某個值視爲某種特定的類型。這不是相當於與鑄造相同。
val b = 1 : Byte
val f = 1 : Float
val d = 1 : Double
在這種情況下,你歸咎於特殊可變參數類型。這反映了用於聲明可變參數一個參數的星號標記,並且可以在任何類型的子類Seq[T]
的變量中:我的心靈,我預測你會看到一個通配符很多在
def f(args: String*) = ... //varargs parameter, use as an Array[String]
val list = List("a", "b", "c")
f(list : _*)
我試着返回一個類似'String *'的字符串數組,我得到一個無法解析的錯誤*。如果我返回'Array [String]'並將它傳遞給帶有args(args:String *)的方法'它表示期望String而不是'Array [String]' – 2017-07-05 08:40:50
雞蛋裏挑骨頭:參數只需爲一個'Seq',或隱式轉換爲一個'Seq'。 – retronym 2010-11-14 15:12:15