【发布时间】:2013-03-23 23:37:21
【问题描述】:
如果我使用 F# 解释器,我可以像这样定义一个简单的函数:
> // Function to check if x is an integer multiple of y
> let multipleOf x y = (x % y = 0);;
val multipleOf : x:int -> y:int -> bool
如果我知道 F# 解释器会话中存在一个函数,但我不确定它的确切类型,我可以通过键入函数的名称让解释器给我它的类型:
> // I can't remember the type of the function multipleOf!
> multipleOf;;
val it : (int -> int -> bool) = <fun:it@12-1>
很明显,这告诉我函数multipleOf 的类型是int->int->bool。在 F# 解释器中工作时,我发现这作为一种记忆的工具非常有用。
但是,我似乎在 Scala 的 REPL 中找不到类似的功能。当然,我可以很容易地在 Scala 中定义一个等效函数:
def multipleOf(x: Int, y: Int) = x % y == 0
但是,如果我在 Scala REPL 会话中进行了十分钟并且不记得函数的类型,则键入 multipleOf 不会提供有关类型的信息(实际上,它会给出错误)。同样,:type multipleOf 没有告诉我任何有用的信息。
【问题讨论】: