它只能来自import sbt._
或来自DefaultProject
。由于sbt
不是包对象,它必须来自DefaultProject
.
这是因为隐式必须定义或导入到作用域中,并且您只能从对象(object
对象或类的实例)中导入它们。例外是在源或目标(当已知时)类型的伴随对象上隐含定义的,这两者都不适用,因为您已经检查过。
不过,这有点没有实际意义。创建新的Scaladoc的原因正是为了处理这些问题。
以 Scala 解析器为例:
import scala.util.parsing.combinator.JavaTokenParsers
object T extends JavaTokenParsers {
def myparser = "\\w+".r ~ "\\d+".r
}
该方法~
未定义在 上Regex
,因此我们搜索它。在此处查看最新的 scaladoc以尝试以下说明。
最简单的方法:点击#
左上角的 ,获取以符号开头的方法列表。向下滚动到~
,然后查看:BigInt OnceParser Parser Parsers。从这里开始,使用试验、错误和直觉。
有条不紊的方法:JavaTokenParsers
在搜索框上输入快速找到班级,然后选择它。在方法列表中,找到implicit
从Regex
到其他东西的方法。只有一个,需要Parser
. 点击Parser
验证。
您可能想要单击 进行implicit def regex
转换的方法,以查看它的定义位置:RegexParsers
。显示该方法定义的文档,JavaTokenParsers
即使它没有在该类中定义或覆盖。
这一点特别重要,因为如果您在 上查看SBT API 文档DefaultProject
,您会发现它本身没有定义任何方法,并且仅在其 40 个(如果我算对的话)祖先特征和类。可能需要一段时间,直到您单击ManagedProject
才能发现它具有从String
两者的隐式转换GroupID
和RepositoryName
,前者定义%
和%%
,而后者定义at
。