在javascript中,我们可以这样做:
["a string", 10, {x : 1}, function() {}].push("another value");Scala的等价物是什么?
发布于 2008-10-09 17:08:54
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]另请参阅:More info on persistent vectors
发布于 2011-05-23 08:38:30
Scala将选择最具体的数组元素类型,它可以容纳所有的值,在这种情况下,它需要最通用的类型Any,它是所有其他类型的超类型:
Array("a string", 10, new { val x = 1 }, () => ()) :+ "another value"结果数组的类型为Array[Any]。
发布于 2008-10-15 17:53:08
Scala可能很快就会拥有支持“异构”列表的能力:HList in Scala
https://stackoverflow.com/questions/185972
复制相似问题