我是 Scala 的新手,能够将函数传递给其他函数非常巧妙——但是我可以传递一个随意的函数引用另一个函数?所述函数参数的数量将是固定的(也就是说,我也很好奇是否也可以传递具有任意数量的函数)。我总是被类型错误绊倒。我尝试过使用Any
但这似乎没有帮助。
例如,我有以下代码:
class CodeRunner(val user_defined: (Int) => Unit) {
def run(input: Int) = {
user_defined(input)
}
}
def arbitrary_code(input: Int) = { println("Running with input " + input) }
val d1 = new CodeRunner(arbitrary_code)
d1.run(4)
我得到:
Running with input 4
现在,假设我想传递以下函数:
def arbitrary_code(input: String) = { println("Running with input " + input) }
我怎样才能改变我的CodeRunner
类来处理两者?
我怎样才能改变我的CodeRunner
类来处理两者?
您可以将任意类型设置为该类的参数:
class CodeRunner[T](val user_defined: (T) => Unit) {
def run(input: T) = {
user_defined(input)
}
}
def arbitrary_code(input: Int) = { println("Running with input " + input) }
val d1 = new CodeRunner(arbitrary_code)
d1.run(4)
def arbitrary_code2(input: String) = { println("Running with input " + input) }
val d2 = new CodeRunner(arbitrary_code2)
d2.run("hello")
请注意,类型d2
is CodeRunner[String]
不可分配给d1
这是CodeRunner[Int]
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)