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

Scala Array构造函数?

发布时间:2020-12-16 09:31:10 所属栏目:安全 来源:网络整理
导读:scala val a = Array [Double] (10)a: Array[Double] = Array(10.0)scala val a = new Array [Double] (10)a: Array[Double] = Array(0.0,0.0,0.0) 为什么这两个表达式有不同的语义? 解决方法 这有点混乱,但Scala有类的概念,您可以创建基本上是类的单例实
scala> val a = Array [Double] (10)
a: Array[Double] = Array(10.0)

scala> val a = new Array [Double] (10)
a: Array[Double] = Array(0.0,0.0,0.0)

为什么这两个表达式有不同的语义?

解决方法

这有点混乱,但Scala有类的概念,您可以创建基本上是类的单例实例的实例和对象。它还具有伴随类的概念,它是一对类和一个具有相同名称的对象。这种机制允许“类”基本上具有静态方法,否则在Scala中是不可能的。

Array具有类和伴随对象。此外,Array object具有应用方法。应用意味着您可以使用Array(arg)创建一个对象。但是因为Array是一个伴侣类,它还有一个可以通过更多通用的新Array(arg)机制调用的构造函数。

问题是在Array对象中应用与Array构造函数不同的语义。 apply方法从指定的对象中创建一个数组,因此,例如,Array(1,2,3)返回一个由对象1,2和3组成的数组。另一方面,构造函数使用指定数组的大小(因此可以创建多维数组),然后将所有插槽初始化为默认值。

所以,基本上

> val a = Array [Double](10)调用Array对象上的apply方法,它创建一个包含给定对象的新数组。> val a = new Array [Double](10)调用Array构造函数,它创建一个具有10个插槽的新数组,所有这些都初始化为默认值0.0。

(编辑:李大同)

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

    推荐文章
      热点阅读