Scala对如何将语言功能实现为库功能做了大量工作.
是否有语言专门处理的类型列表?
在规范中还是作为实现细节?
这将包括,例如,优化远离元组的匹配.
那些与模式匹配,理解,try-catch块和其他语言结构相关的特殊约定呢?
字符串在某种程度上是特殊的编译器吗?我看到字符串增强只是一个库隐式转换,并且支持字符串连接Predef,但是这种语言特别容易吗?
同样,我看到有关<:<和classOf和的问题asInstanceOf,并且不清楚什么是神奇的内在.有没有办法通过编译器选项或查看字节代码来区分?
我想了解一下,如果某个功能是由Scala.JS和Scala-native等实现统一支持的,或者某个功能实际上可能证明是依赖于实现的,这取决于库的实现.
从 scala-2.10.4 的 array.scala 中,数组被定义为
final class Array[T](_length: Int) extends java.io.Serializable with java.lang.Cloneable {
/** The length of the array */
def length: Int = throw new Error()
def apply(i: Int): T = throw new Error()
def update(i: Int, x: T) { throw new Error() }
override def clone(): Array[T] = throw new Error()
}
Run Code Online (Sandbox Code Playgroud)
请注意,apply 方法会抛出异常!对于伴随对象 Arrry,我找到以下代码:
def apply[T: ClassTag](xs: T*): Array[T] = {
val array = new Array[T](xs.length)
var i = 0
for (x <- xs.iterator) …Run Code Online (Sandbox Code Playgroud)