功能平等如何在Scala中起作用?

时间:2015-05-11 05:11:41

标签: scala

如何为'函数定义等于函数'类型:

val javaVersion = () => sys.props("java.version")

val anonfun0 = new Function0[String] {
  def apply(): String = sys.props("java.version")
}

assert(javaVersion() == anonfun0()) // This works!

2 个答案:

答案 0 :(得分:7)

它的工作原理是因为您要比较结果而不是功能。删除(),它应该返回false。

答案 1 :(得分:2)

你的断言不是测试函数的相等性,而是测试它们返回的值。

注意:

之间的区别
assert(javaVersion() == anonfun0()) // equality of return values

assert(javaVersion == anonfun0) // equality of vals 

您的断言返回true,因为两个函数都返回sys.props的结果(" java.version")。