开发者学堂课程【Scala 核心编程-基础:关联 Scala 源码】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/609/detail/8886
关联 Scala 源码
一、Scala 源码的查看的关联
在使用 scala 过程中,为了搞清楚 scala 底层的机制,需要查看源码。
下面看看如何关联和查看 Scala 的源码包:
1、查看源码,选择要查看的方法或者类,输入 ctrl + b
2、关联源码,看老师演示
比如打开 scala 写一段代码:
创建一个新文件 object 类型,名叫 looksourcecode,写入:
def main(args: Array[string]): unit = {
var arr = new Array [ Int](10)
//对代码进行格式化的快捷键 ctrl+alt+l
for (item <- arr) {
println( "item=” + item)
}
运算符之间要有空格。
运行输出:
D: lprogram\jdk8\binljava ...
item=o
item=o
item=o
Process finished with exit code o
可以看到一共输出了十个0,因为写入的大小是十个,相当于十个元素,但是因为没有写入值,所以是十个0。
现在看array的源码,这个很重要,因为在后面的学习中不可避免地要看源码。
方法很简单,把光标定在 var arr = new Array [ Int](10)上的 array 上按下 ctrl+b 显示:
Sources not found Download... Attach Sources...
package scala
final class Array[T]_length : scala.Int) extends scala.AnyRef with java.io.Serializabl
e
with java.lang.cloneable {
def length : scala.Int = {/* compiled code */ }
def apply(i : scala.Int) : T = { / * compiled code */ }
def update(i : scala.Int,x : T) : scala.unit -= { /* compiled code */ }
override def clone
()
: scala.Array[T] = {/ * compiled code */ }
这里看到 array 的定义是 final class,表示数组不可变。
Sources not found 表示源码看不到。
这只是一种简单的声明,解决办法第一种方法是:
1、点击 Download... 下载
2、点击 Attach Sources... 关联源码
关联源码有点麻烦,点击可以看到默认会在安装的 scala 主目录下的 lib 里找源码,把源码包扔过去就行了。
举例:
在以前学习用到的分享包里面有一个 scala-sources-2.12.4.tar 或者在网上下载一个也可以,复制,复制后为了方便管理直接将其拷贝到 scala-2.11.8目录下的lib里。
回到界面中点击 Attach Sources... 看关联能否成功:
会发现没有看到刚才的源码包,不识别所以麻烦,放在那里也没有用,那么多来一步就可以了:
在 scala-2.11.8目录下的 lib 里将刚才的资源包先手动解压一下,解压完了之后再去关联一下可以看到这个资源包,但关联却没有任何反应。
解决方法是在 scala-2.11.8目录下的 lib 里将资源包解压完成后再解压一次,解压完成后再去关联就没有问题了。
可以看到一堆源码,点击 ok 后,不要着急,它正在进行索引,索引完成后会自动切换到源码包。
源码包的关联步骤就是将 scala-sources-2.12.4.tar.gz 拷贝到 scala 的 lib 目录下,解压两次,然后关联就可以了。