开始学习 Scala,我想在控制台中快速查看方法签名。例如,在 Haskell 中,我会这样做:
Prelude> :t map
map :: (a -> b) -> [a] -> [b]
这清楚地显示了 map 函数的签名,即它需要:
- 接受a并返回b的函数
- 一个列表
并返回
- b列表
由此得出结论,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 无法决定显示哪个重载。那么有没有办法显示所有方法重载的类型呢?