1

在官方 API 页面上,我搜索了“时间”,但找不到该类。我查看了RichLongRichInt上的所有方法,但找不到这些方法。

我专门谈论将 int/long 转换为某种富对象的方法:

2 hours + 12 seconds

注意我不是在问包裹是什么,我想知道如何找到它。

4

2 回答 2

3

这些不在标准的 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 的答案可能就是你真正想要的!

于 2012-05-18T15:48:41.243 回答
3

您可以使用该-Xlog-implicits标志让编译器向您显示它在哪里找到隐式转换。

于 2012-05-18T15:29:36.477 回答