【发布时间】:2014-02-17 16:15:19
【问题描述】:
这个有用的 StackOverflow answer 指出无法比较两个函数。
对于以下内容,我得到了 `false,正如预期的那样:
定义
scala> def add1Test: Int => Int = { println("3"); _ + 1 }
add1Test: Int => Int
scala> add1Test == add1Test
3
3
res4: Boolean = false
scala> :t add1Test(5)
Int
功能1
scala> def foo: Function1[Int, Int] = _ + 1
foo: Int => Int
scala> :type foo
Int => Int
scala> foo == foo
res6: Boolean = false
值
但是,对于val,我是真的。
scala> val valAdd1: Int => Int = { println("val"); _ + 1}
val
valAdd1: Int => Int = <function1>
scala> valAdd1 == valAdd1
res3: Boolean = true
scala> :t valAdd1
Int => Int
为什么比较def 和Function 的结果是假的,而val 的结果却是真的?
另外,为什么在比较 def 和 Function 时返回 false,而不是其他行为(例如:抛出异常)?
【问题讨论】: