首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Scala中创建异构数组?

如何在Scala中创建异构数组?
EN

Stack Overflow用户
提问于 2008-10-09 05:00:50
回答 4查看 29.6K关注 0票数 28

在javascript中,我们可以这样做:

代码语言:javascript
复制
["a string", 10, {x : 1}, function() {}].push("another value");

Scala的等价物是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-10-09 17:08:54

Scala中的数组是非常同构的。这是因为Scala是一种静态类型的语言。如果您确实需要伪异构特性,则需要使用协变参数化的不可变数据结构(大多数不可变数据结构都是如此)。List是其中的典型示例,但Vector也是一种选择。然后你可以这样做:

代码语言:javascript
复制
Vector("a string", 10, Map("x" -> 1), ()=>()) + "another value"

结果将是Vector[Any]类型。在静态类型方面不是很有用,但一切都会像承诺的那样存在。

顺便说一下,Scala中数组的“文字语法”如下所示:

代码语言:javascript
复制
Array(1, 2, 3, 4)     // => Array[Int] containing [1, 2, 3, 4]

另请参阅More info on persistent vectors

票数 41
EN

Stack Overflow用户

发布于 2011-05-23 08:38:30

Scala将选择最具体的数组元素类型,它可以容纳所有的值,在这种情况下,它需要最通用的类型Any,它是所有其他类型的超类型:

代码语言:javascript
复制
Array("a string", 10, new { val x = 1 }, () => ()) :+ "another value"

结果数组的类型为Array[Any]

票数 18
EN

Stack Overflow用户

发布于 2008-10-15 17:53:08

Scala可能很快就会拥有支持“异构”列表的能力:HList in Scala

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/185972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档