如果我在Scala中有以下类:
class Simple {
def doit(a: String): Int = 42
}
该类的一个实例
o = new Simple()
是否可以定义一个隐式转换,它会将此实例和编译时已知的方法转换为这样的元组?
Tuple2 (o, (_: Simple).doit _)
我希望我能够提出一个注册函数回调的原则:
doThisLater (o -> 'doit)
我在功能上让我的函数回调基于retronym对previous SO question的回答而工作,但是添加这层厚厚的语法糖会很棒。
答案 0 :(得分:2)
您可以直接扩展该方法。样本REPL会话,
scala> case class Deferred[T, R](f : T => R)
defined class Deferred
scala> def doThisLater[T, R](f : T => R) = Deferred(f)
doThisLater: [T, R](f: T => R)Deferred[T,R]
scala> val deferred = doThisLater(o.doit _) // eta-convert doit
deferred: Deferred[String,Int] = Deferred(<function1>)
scala> deferred.f("foo")
res0: Int = 42