在javascript中,我们可以这样做:
["a string", 10, {x : 1}, function() {}].push("another value");
什么是Scala等价物?
Scala中的数组非常均匀.这是因为Scala是一种静态类型语言.如果您确实需要伪异构功能,则需要使用协变参数化的不可变数据结构(大多数不可变数据结构). List
是那里的典型例子,但Vector
也是一种选择.然后你可以做这样的事情:
Vector("a string", 10, Map("x" -> 1), ()=>()) + "another value"
结果将是类型Vector[Any]
.在静态类型方面不是很有用,但一切都将按照承诺在那里.
顺便提一下,Scala中数组的"文字语法" 如下:
Array(1, 2, 3, 4) // => Array[Int] containing [1, 2, 3, 4]
另请参见:有关持久向量的更多信息
Scala将选择可以保存所有值的最具体的Array元素类型,在这种情况下,它需要最通用的类型Any
,它是每种其他类型的超类型:
Array("a string", 10, new { val x = 1 }, () => ()) :+ "another value"
结果数组将是类型Array[Any]
.