加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在Scala中定义列表列表?

发布时间:2020-12-16 09:01:10 所属栏目:安全 来源:网络整理
导读:我想为以下类型创建一个存储: List(List(2.3,1.1),List(2.2,1)) 但如果我做以下事情: var y = List(List (1.0,2.2),List(2,1.1,-2.1)) 然后它创建List [AnyVal]并在我尝试执行数学运算时给出错误: y(0)(0) * 2 // Error - value '2' is not a member of A
我想为以下类型创建一个存储:

List(List(2.3,1.1),List(2.2,1))

但如果我做以下事情:

var y = List(List (1.0,2.2),List(2,1.1,-2.1))

然后它创建List [AnyVal]并在我尝试执行数学运算时给出错误:

y(0)(0) * 2         // Error - value '2' is not a member of AnyVal

解决方法

在两个示例中,一个列表包含一个作为Int的数字(第一个案例中的最后一个,第二个列表的第一个元素),其余的数字是双打.
因此列表元素的推断类型将是AnyVal,这是它们的第一个常见超类型,因此您的外部列表将成为List [List [AnyVal]].

如果你也尝试使用scala 2.8,那么它应该使用Numeric而不是AnyVal,因为它成为Double和Int的超类型.大多数数值运算(在你的情况下乘法)也适用于它们.

要修复2.7.x的问题,只需使用双打来获取这些值(1.0或1D).

明确地将类型声明为List [List [Double]]也可能会有所帮助.在这种情况下,您给出的Int值将转换为Doubles.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读