Scala:Array.toArray 的用例?

3

Scala.Array 包含一个函数 toArray,作为从 ArrayOps 隐式导入的。

是否有任何使用案例可以使用 Array.toArray 或者它总是返回对象的副本?

1个回答

7

ArrayOps继承自GenTraversableOncetoArray方法(在TraversableOnce中提供了默认实现)。

对于Array来说,这个方法是没有意义的,但是对于其他GenTraversableOnce的子类,比如MapListSet等等,这个方法是有用的。

类似地,Map继承了一个无意义的toMap方法,List继承了一个toList方法,Set继承了一个toSet方法,以此类推。


在特定情况下,toArray方法提供的默认实现会被ArrayOps覆盖。

如果在Array上调用toArray方法,只有当目标类型的运行时类不同时,它才会返回一个新的Array,否则它将只是将Array强制转换为适当的类型并返回相同的实例。

因此,通常情况下,在Array实例上调用toArray方法是没有意义的,尽管不会显著增加开销。


谢谢。这个问题是因为我在一段代码中看到了这个:def fun(ar: Array[Long]) = ar.toArray.combinations(3).[other ops]在这个概念中有任何意义吗?ar的类型总是Array [Long],对吗? - Bar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接