【发布时间】:2011-09-15 00:08:58
【问题描述】:
我是 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 类以同时处理两者?
【问题讨论】:
-
闻起来像仿制药:scala-lang.org/node/113
-
呃。 smacks head 这在有人指出之后似乎很明显。谢谢!
标签: function scala functional-programming polymorphism arity