scala - 从 Scala 控制台获取函数类型

标签 scala

开始学习Scala,想快点看看console中的方法签名。
例如,在 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 无法决定显示哪个重载。那么有没有办法显示所有方法重载的类型呢?

    最佳答案

    scala> :type <expr>  
    

    显示表达式的类型而不计算它

    关于scala - 从 Scala 控制台获取函数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12616820/

    相关文章:

    scala - 如何获取play框架中所有Route URL字符串的列表?

    scala - 哪些 unapply 调用可以用括号替换?

    scala - 在 Products.scala 中找不到 flash

    scala - 通常接受一个类型并返回相同类型的函数

    string - Scala 中 java.lang.String 的引用相等性

    scala - 如何模式化匹配int字符串?

    scala - bigquery 在数组外添加重复记录

    scala - 是否可以写一个不可变的双向链表?

    scala - 如何使用 scala play 为 OAuth1.0a 的 POST 签名?

    scala - 泛型函数类型中的通用量化