下面的代码工作正常
def exec(f: (Int, Int) => Boolean, p1: Int, p2: Int) = f(p1, p2)
val >= = (x1: Int, x2: Int) => x1 >= x2
println(exec(>=, 10, 10))
但是,问题是,是否有可能在没有显式重新定义运算符(合成函数)的情况下使其正常工作?
更新资料
显然,它像这样绝对好用
println(exec(_ >= _, 10, 10))
问题是,是否有可能在exec(>=, 10, 10)
不定义功能值的情况下使其以某种形式工作。
让我尝试回答我自己的问题。
比较方法Int
以以下方式声明
def>=(x: Int): Boolean
因此,它们被称为一个实例Int
并应用于一个参数。没有将两个方法“绑定”在一起的方法,就无法传递它们作为参数。
我们可以通过预先声明方法或功能值并将其映射到下面的>=
方法中来做到这一点Int
def >= (x1: Int, x2: Int) = x1 >= x2
def >= = (_: Int) >= (_: Int)
val >= = (x1: Int, x2: Int) => x1 >= x2
val >= = (_: Int) >= (_: Int)
或通过使用匿名函数形式_ >= _
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句