假设我有一种方法期望另一种方法作为参数.是否可以为该参数发送对象的实例方法?我如何处理没有参数的方法?
我会写一些伪代码:
void myMethod1(callback<void,int> otherFunc); // imagine a function returning void,and taking a int parameter void myMethod2(callback<int,void> otherFunc); // function returning void,not taking params
val a = new ArrayList()
解决方法
我认为myMethod4可能就是你所说的:“是否有可能引用a.size并在需要时调用它?”.
def myMethod1(f: Int => Unit): Unit = f(1) def myMethod2(f: () => Int): Unit = { val value = f // f is function,taking no arguments,and returning an int. // we invoke it here. () } def myMethod3(f: => Int): Unit = { val value = f // f is call by name parameter. () } def myMethod4[A](f: A => Int,a: A): Unit = { val value = f(a) () } import java.util.ArrayList val a = new ArrayList[Int](1) myMethod1((i: Int) => a.add(i)) myMethod1(a.add(_)) // shorthand for the above myMethod2(() => a.size) // a.size is not evaluated,it is enclosed in an anonymous function deFinition. myMethod3(a.size) // a.size is not evaluated here,it is passed as a by-name parameter. myMethod4((al: ArrayList[Int]) => al.size,a) myMethod4((_: ArrayList[Int]).size,a) myMethod4[ArrayList[Int]](_.size,a)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。