如何为'函数定义等于函数'类型:
val javaVersion = () => sys.props("java.version")
val anonfun0 = new Function0[String] {
def apply(): String = sys.props("java.version")
}
assert(javaVersion() == anonfun0()) // This works!
答案 0 :(得分:7)
它的工作原理是因为您要比较结果而不是功能。删除(),它应该返回false。
答案 1 :(得分:2)
你的断言不是测试函数的相等性,而是测试它们返回的值。
注意:
之间的区别assert(javaVersion() == anonfun0()) // equality of return values
和
assert(javaVersion == anonfun0) // equality of vals
您的断言返回true,因为两个函数都返回sys.props的结果(" java.version")。