什么是def f1 [A](x:=> A)和def f1 [A](x:A)之间的差异?

时间:2013-07-04 06:40:19

标签: scala functional-programming

我正在阅读Option对象中的getOrElse定义:

def getOrElse[B >: A](default: => B): B

为什么选择箭头而不只是写作?:

def getOrElse[B >: A](default: B): B

首先我认为它就像是在说“它接收一个将Unit映射到B的函数”,但我创建了一个REPL会话,它看起来并不意味着。

scala> def f1(x: => Int) = x
f1: (x: => Int)Int

scala> f1(1)
res6: Int = 1

scala> def f1(x: Int) = x
f1: (x: Int)Int

scala> f1(1)
res8: Int = 1

scala> def f1(x: Unit => Int) = x
f1: (x: Unit => Int)Unit => Int

scala> f1(1)
<console>:10: error: type mismatch;
 found   : Int(1)
 required: Unit => Int
              f1(1)
                 ^

0 个答案:

没有答案