所以我认为我的问题与幕后发生的事情有关,但我不明白为什么这不起作用:
scala> b = b :: "apple";
<console>:8: error: value :: is not a member of java.lang.String
Run Code Online (Sandbox Code Playgroud)
但这样做:
scala> b = "apple" :: b;
b: List[java.lang.String] = List(apple, pear)
Run Code Online (Sandbox Code Playgroud)
谢谢.
结尾的方法名称:是右关联的,因此b :: "apple"尝试::在不存在的String上调用该方法.
如果你必须使用a,那么附加内容的正常策略List是在开始reverse时添加内容然后在结束时添加结果.但正如雷克斯所说,使用Vector可能会更好.
::始终将新项目连接到列表的头部.可以在最后添加一个项目,但它需要与列表长度成比例的时间(因为整个列表不仅必须遍历,而且实际上也必须重建).
如果您确实必须在列表末尾添加项目,请使用:+:
List("pear","orange") :+ "apple"
Run Code Online (Sandbox Code Playgroud)
更好的是,Vector在需要添加到最后时使用(在双端添加时速度更快):
Vector("grape","peach") :+ "apple"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |