我正在阅读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)
^