【发布时间】:2015-06-28 17:20:34
【问题描述】:
在Scala中,定义一个以名称调用参数的函数是这样的:
def f(x: => R)
我认为=> R 是指参数为空且返回值类型为R 的函数。但是当我将一个类型不是=> R 的函数传递给f 时,比如R => R,我发现它仍然有效。例子是这样的:
scala> def foo(code: => Int) {
| println(code)
| }
foo: (code: => Int)Unit
scala> val bar: () => Int = () => 1
bar: () => Int = <function0>
scala> foo(bar())
1
scala> val bar1: Int => Int = myInt => 2
bar1: Int => Int = <function1>
scala> foo(bar1(2))
2
谁能解释一下?
【问题讨论】:
-
您能否发布一个当参数类型为
=>R时接受R => R的代码示例? -
@DidierDupont:添加示例,谢谢!
标签: scala