2015-09-28 74 views
0

當我做str.split(「\ |」)默認情況下它返回Array[string]。我如何得到返回類型爲List[String]而不是Array[string]。我能夠使用toList轉換爲List。但是,我想知道是否有可能沒有toList表達式返回List而不是Array

scala> val str = "a|b|c" 
str: String = a|b|c 

scala> val arr = str.split("\\|") 
arr: Array[String] = Array(a, b, c) 

scala> val convList = arr.toList 
convList: List[String] = List(a, b, c) 

scala> val lis: List[String] = str.split("\\|") 
<console>:11: error: type mismatch; 
found : Array[String] 
required: List[String] 
val lis: List[String] = str.split("\\|") 
+7

toList有什麼問題?記住,String是java.lang.String,它的分割返回一個數組。 –

+0

感謝您的回覆。其實在整個程序中有很多陣列,但是每一個我想要它成爲List的地方。隱式轉換似乎很有幫助 – WoodChopper

+0

但隱式轉換隻是語法糖。它仍然是一個數組,你仍然打電話給列表:) –

回答

1

您可以實現的隱式轉換,則分配將不類型的錯誤工作;

implicit def arrayToList[A](arr: Array[A]) = arr.toList 
+0

請不要這樣做。在大多數情況下,隱式轉換是一個壞主意(它們現在需要一個功能標誌),而這種轉換特別可能會讓您更難以推斷程序的性能。只需使用'toList',可能通過一個包裝'split'的輔助方法。 –

+0

感謝您提出寶貴意見,您可以提供詳細的鏈接供進一步閱讀嗎? @TravisBrown –

相關問題