2015-09-28 58 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 –

相关问题