假设我有一个带有一些方法的类 C
def class C {
def f1():Int = ...
def f2():Int = ...
}
现在我想要一个接受两个 C 实例的方法,以及一个 C 的方法,但我不知道 f1、f2 的类型是什么,也不知道如何调用它们。我想它看起来像
def cmp(first:C, second:C, t:() => Int): Boolean = {
first.t < second.t
}
这提示 t 不是 C 的方法。当然必须有一种方法来表达这一点。
最佳答案
def cmp(first:C, second:C, t: C => Int): Boolean = {
t(first) < t(second)
}
然后...
val c1 = new C
val c2 = new C
cmp(c1, c2, _.f1())
cmp(c1, c2, _.f2())
这是使用匿名函数。最后两行相当于:
cmp(c1, c2, {c: C => c.f1()})
cmp(c1, c2, {c: C => c.f2()})
除非您使用某种反射,否则您无法传递对方法本身的引用。
关于scala - 如何在Scala中将类方法作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17414994/