开始学习Scala,想快点看看console中的方法签名。
例如,在 Haskell 中我会这样做:
Prelude> :t map
map :: (a -> b) -> [a] -> [b]
这清楚地显示了 map 函数的签名,即它需要:
并返回
这导致得出的结论是
map 函数通过将函数应用于列表的每个元素,将 a 的列表转换为 b 的列表。
有没有办法在 Scala 中以类似的方式获取方法类型?
更新:
尝试 Federico Dal Maso 的答案,并得到这个
scala> :type Array.fill
<console>:8: error: ambiguous reference to overloaded definition,
both method fill in object Array of type [T](n1: Int, n2: Int, n3: Int, n4: Int, n5: Int)(elem: => T)(implicit evidence$13: scala.reflect.ClassManifest[T])Array[Array[Array[Array[Array[T]]]]]
and method fill in object Array of type [T](n1: Int, n2: Int, n3: Int, n4: Int)(elem: => T)(implicit evidence$12: scala.reflect.ClassManifest[T])Array[Array[Array[Array[T]]]]
match expected type ?
Array.fill
显然 fill 方法被重载,并且 :type 无法决定显示哪个重载。那么有没有办法显示所有方法重载的类型呢?
最佳答案
scala> :type <expr>
显示表达式的类型而不计算它
关于scala - 从 Scala 控制台获取函数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12616820/