2013-12-08 60 views
0

我怎樣才能通過List[Any]List[Any]作爲參數List.concat?我的代碼是:通過一個列表作爲可變參數斯卡拉

List.concat((a filter (x => x.getClass == a.getClass)): _*) 

aList[Any](a filter (x => x.getClass == a.getClass))應該成爲列出的清單。我得到的錯誤是type mismatch; found List[Any] required: Seq[Traversable[Any]]

是否有任何要傳遞參數列表的元素,或將列表轉換爲序列?謝謝。

+0

作品對我來說:https://codebrew.io/ftamas/hEqIc1C_QxOcssz2364JsQ – user60561

+0

如果我有一個列表'一個=列表(列表(1,2,3),列表(4,5))',我會如何製作這個'List(1,2,3,4,5)'? – Impossibility

+0

'List(List(1,2,3),List(4,5))。flatten'生成'List(1,2,3,4,5)'。 –

回答

0

您對: _*有什麼打算?刪除它,你的代碼應該工作。

實際上,您可以將List [Any]傳遞給concat,如下所示。

val list1 = List("Abby", "Jim", "Tony") 
val list2 = List[Any](90,"Tom") 
val ret = List.concat(list1,list2) 

您的代碼的問題,我想是與: _*。而另一個問題是a filter (x => x.getClass == a.getClass),一個元素與容器類型相似的機會很小,在你的情況下是List。這是你的真正意圖嗎?你想要一個List [Any]包含類型爲List [Any]的元素嗎?

以下代碼有效,我在http://scalass.com/tryout中對它們進行了驗證。

val list = List[Any](90,"Tom") 
val r = List.concat((list filter (x => x.getClass == "".getClass)))