【发布时间】:2015-10-28 23:36:51
【问题描述】:
我正在研究如何解决this 问题。但是,我想知道我是否可以开始学习 function 的工作原理,或者它们如何通过阅读 scala 的源代码将参数传递到本地范围。
我知道scala的源代码托管在Github,我的问题是如何定位def的定义。
或者更一般地说,如何定位某些内置函数、运算符的源代码?
【问题讨论】:
标签: scala
我正在研究如何解决this 问题。但是,我想知道我是否可以开始学习 function 的工作原理,或者它们如何通过阅读 scala 的源代码将参数传递到本地范围。
我知道scala的源代码托管在Github,我的问题是如何定位def的定义。
或者更一般地说,如何定位某些内置函数、运算符的源代码?
【问题讨论】:
标签: scala
Scala 标准库中所有内容的源代码都在https://github.com/scala/scala/tree/2.11.x/src/library/scala 下。
此外,标准库的 Scaladoc 包含指向源代码的链接。所以例如如果您对scala.Option 感兴趣并且正在查看http://www.scala-lang.org/api/2.11.7/#scala.Option,请注意该页面具有“Source:Option.scala”,其中“Option.scala”超链接到the source code。
对于像def 这样的东西,它不是标准库的一部分,而是语言的一部分,嗯……没有一个地方可以定义def 本身。编译器有 25 个阶段(您可以通过运行 scalac -Xshow-phases 列出它们),基本上每个阶段都参与了使 def 表达其含义的工作。
如果您想了解def,最好阅读Scala Language Specification;它技术含量很高,但仍然比编译器的源代码更容易理解。
解决您关于命名和默认参数问题的规范部分是SLS 6.6.1。
【讨论】: