10

在 Scala REPL 中可以找到值类型:

    scala> val x = 1
    x: Int = 1

    scala> :t x
    Int

然而 Scala REPL 没有显示函数的类型信息:

    scala> def inc(x:Int) = x + 1
    inc: (x: Int)Int

scala> :t inc
<console>:9: error: missing arguments for method inc;
follow this method with `_' if you want to treat it as a partially applied function
       inc
       ^
<console>:9: error: missing arguments for method inc;
follow this method with `_' if you want to treat it as a partially applied function
          inc
          ^

如何在 Scala REPL 中查找函数类型?

4

2 回答 2

26

遵循建议会很好地工作:

:t inc _
Int => Int

更详细地说,这是必要的原因是 Scala 在“方法”和“函数”之间保持区别,“方法”在 JVM 中具有本机支持,但不是一流的,“函数”被视为实例FunctionX并被视为作为JVM的对象。尾随下划线的使用将前者转换为后者。

于 2013-03-25T09:48:02.460 回答
4

您可以写下方法的名称并按 Tab。

Stream.fill<tab>

给你:

def fill[A](n1: Int,n2: Int,n3: Int)(elem: => A): 
scala.collection.immutable.Stream[scala.collection.immutable.Stream[scala.collection.immutable.Stream[A]]]
def fill[A](n1: Int,n2: Int,n3: Int,n4: Int)(elem: => A): scala.collection.immutable.Stream[scala.collection.immutable.Stream[scala.collection.immutable.Stream[scala.collection.immutable.Stream[A]]]]
def fill[A](n1: Int,n2: Int)(elem: => A): scala.collection.immutable.Stream[scala.collection.immutable.Stream[A]]
def fill[A](n1: Int,n2: Int,n3: Int,n4: Int,n5: Int)(elem: => A): scala.collection.immutable.Stream[scala.collection.immutable.Stream[scala.collection.immutable.Stream[scala.collection.immutable.Stream[scala.collection.immutable.Stream[A]]]]]
override def fill[A](n: Int)(elem: => A): scala.collection.immutable.Stream[A]
于 2018-02-07T15:55:43.980 回答