在官方 API 页面上,我搜索了“时间”,但找不到该类。我查看了RichLong和RichInt上的所有方法,但找不到这些方法。
我专门谈论将 int/long 转换为某种富对象的方法:
2 hours + 12 seconds
注意我不是在问包裹是什么,我想知道如何找到它。
这些不在标准的 Scala API 中。你在使用 JodaTime 的 scala-time 包装器吗?如果是这样,那会告诉你在哪里看。一般来说,如果您知道哪个导入启用了该功能,那么在尝试查找文档时会有很大帮助!
如果您知道方法名称,您可以单击左侧面板顶部的小字母,就在 ScalaDoc 中的搜索文本字段下方 - 这将显示文档中具有该名称的所有内容的列表,包括方法(并告诉你如何找到它)。
如果一个类本身没有方法,你可以使用 Scala 告诉你它被转换成什么类:
def whoHasSize[A](a: A)(implicit ev: A => { def size: Int }) = ev(a).getClass.getName
scala> whoHasSize("fish")
res1: java.lang.String = scala.collection.immutable.StringOps
所以在这里你看到字符串"fish"
本身没有size
方法;相反,这是由该scala.collection.immutable.StringOps
方法授予的。你可以做同样的事情来了解seconds
.
最后,stew 的答案可能就是你真正想要的!
您可以使用该-Xlog-implicits
标志让编译器向您显示它在哪里找到隐式转换。