为什么这不是有效的?
var a = List[(String,String)]
a = a :: ("x","y")
Run Code Online (Sandbox Code Playgroud)
基本上我想初始化一个元组列表并在列表中添加一个元组.
eli*_*sah 19
这里有两个错误.
第一个是你试图实例化一个抽象类的List
我相信你要做的是以下几点
var a : List[(String,String)] = List()
Run Code Online (Sandbox Code Playgroud)
这将创建一个空元组列表的列表.
第二个是你试图添加一个实际上不是元组的元素,所以我相信你应该尝试以下方法
a = a:+(("x","y"))
Run Code Online (Sandbox Code Playgroud)
在这里,您将定义一个元组并将其添加到List a中
Ben*_*ich 10
您可以通过List[(String, String)]多种方式实例化一个空:
val list = List[(String, String)]()
val list = List.empty[(String, String)]
val list : List[(String, String)] = Nil
val list : List[(String, String)] = List()
val list = Nil : List[(String, String)]
val list : List[(String, String)] = List.empty
Run Code Online (Sandbox Code Playgroud)
注意,那就是,默认实例Traversable,Iterable,Seq,和LinearSeq所有也返回List,这样你就可以使用这些呢,(例如Seq.empty[(String, String)]).
然后你可以使用:+以下方法添加元素:
val newList = list :+ ("x", "y")
val newList = list :+ ("x" -> "y")
Run Code Online (Sandbox Code Playgroud)
您使用的是cons方法::,用于预先添加.在Scala中,结尾的方法:是右关联的:
val newList = ("x" -> "y") :: list
Run Code Online (Sandbox Code Playgroud)
如果您希望它们保持关联状态,您也可以使用常规点语法调用它们,就像常规方法一样:
val newList = list.::("x" -> "y")
Run Code Online (Sandbox Code Playgroud)
这种方法是正确关联的原因是因为它预先构成了元素,允许你做以下事情:
val newList = ("x" -> "y") :: ("a" -> "b") :: list
Run Code Online (Sandbox Code Playgroud)
并保留预期的顺序(与代码中出现的顺序相同).
| 归档时间: |
|
| 查看次数: |
18919 次 |
| 最近记录: |