我可以有一個回傳 a 的高階函式,func(varargs*)例如,(s: String*) => String?
我正在嘗試執行以下操作:
def concatKeys(delimiter: String) = {
def concat(k1: String, k2: String): String = if (k1.isEmpty) k2 else k1 delimiter k2
(keys: String*) => keys.foldLeft("")(concat)
}
但是當我按預期使用它時,代碼無法編譯:
val key: String = concatKeys(delimiter)(keyAcc, kv._1)
如果我將其更改為Traversable:
def concatKeys(delimiter: String) = {
def concat(k1: String, k2: String): String = if (k1.isEmpty) k2 else k1 delimiter k2
(keys: Traversable[String]) => keys.foldLeft("")(concat)
}
它自然編譯:
val key: String = concatKeys(delimiter)(Set(keyAcc, kv._1))
那么,不能用可變引數回傳 HOF 嗎?如果沒有,為什么不呢?
謝謝你們!
uj5u.com熱心網友回復:
Varargs 不是有效型別,它們只是糖語法,僅適用于方法,而不適用于函式。
請記住,在方法體內部,vararg 引數實際上只是一個Seq
所以不,你不能。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/393578.html
