如何在IntelliJ的类实例中找到scala应用函数的用法?

时间:2016-08-18 07:04:37

标签: scala intellij-idea

如果我从Scala类的实例调用apply方法

object Main {
  def main(args: Array[String]): Unit = {
    val a = new A(2)
    a(2)
    a(10)
  }

  class A(a: Int) {
    def apply(a: Int): A = new A(a)
  }
}

我无法通过 Alt + F7 或Ctrl +点击找到它的用法。

有没有办法在IntelliJ中找到scala apply方法的用法?

编辑:在第一次提出这个问题时,我不明白这只是针对类实例的apply-method的一个问题。它适用于伴随对象中的apply-method,如@sebszyller所示。

这可能是IntelliJ中的一个错误。结束这个问题。

1 个答案:

答案 0 :(得分:1)

以下代码段适用于我。

2016-08-19 12:04:56.993 UTC

Ctrl-Click 为我提供了一个显示object Main { def main(args: Array[String]): Unit = { val a1 = A(1) val a2 = A(2) } class A(a: Int) object A { def apply(a: Int): A = new A(a) } } A(1)的列表。不幸的是,目前无法显示屏幕截图。

也适用于你的榜样;给我一个两个用法列表。

A(2)

我现在在2016.2但是我一直在使用该选项,只要我记得。

更新:

我想出来了。请考虑以下代码段:

object Main {
  def main(args: Array[String]): Unit = {   
    val eleven = Add10(1)
    val twelve = Add10(2)
  }

  object Add10 {
    def apply(a: Int): Int = a + 10
  }
}

似乎object Main { def main(args: Array[String]): Unit = { val a = new A(2) val b = new A(10) val a1 = a(2) val a2 = a(2) a.doSthElse val b1 = b(10) val b2 = b(10) val apply1 = a.apply _ val apply2 = b.apply _ val apply3 = a.apply(10) val tenFromA = apply1(10) val tenFromB = apply2(10) } class A(a: Int) { def apply(a: Int): A = new A(a) def doSthElse = println("sth else") } } 链接到类的实例而不是定义本身。在下面的代码段中,如果您点击apply,它会显示所有用法:a两次,a(2)a.doSthElse以及a.apply _。我以ba.apply _b.apply _的形式包含了三个显式调用。单击a.apply(10)确实显示了这三种用法的列表。在我看来,它无法确定def applya(2)来电是一个错误。