的源代码map
用于阵列是:
override def map[B](f: A => B): Array[B] = throw new Error()
Run Code Online (Sandbox Code Playgroud)
但以下工作:
val name : Array[String]= new Array(1)
name(0)="Oscar"
val x = name.map { ( s: String ) => s.toUpperCase }
// returns: x: Array[java.lang.String] = Array(OSCAR)
Run Code Online (Sandbox Code Playgroud)
ret*_*nym 15
通常,当您throw new Error()
在库类的源代码中看到它时,它表示编译器正在干预并通过桥接到平台的工具来实现该方法的点(请记住,这可能是Java或.NET).
所述阵列SID说明如何使用阵列Scala中2.7.x进行处理,以及它们如何在2.8改变.使用对象神奇地转换成一个编译器BoxedArray
,如果你打电话map
.
在2.8中,Arrays与Scala集合框架的集成主要通过使用普通语言特征来处理 - 根据上下文的隐式转换Array[T]
,WrappedArray[T]
或者支持创建泛型类型数组的ArraySeq[T]
类型的隐式参数.数组索引,长度和更新仍显示为.不再存在,相反,你会发现这个和常规方法.Manifest[T]
T
throw new Error()
Array#map
WrappedArray
ArraySeq
UPDATE
如果您有兴趣知道这个编译器魔术是定义的,请看看Scala 2.8的Cleanup.scala化身.
归档时间: |
|
查看次数: |
696 次 |
最近记录: |