我有一个函数foo接受一个布尔函数斯卡拉布尔函数抽象
def foo(f:(_)=>Boolean) = //do something with f
我可以调用foo如下
foo((x:Int) => x == 0)
现在,我要修改富接受返回布尔任何功能。例如。修改后的foo应该适用于以下情况。
foo((x:Int, y:Int) => x == y)
foo((x:Int, y:Int, z:Int) => x == y && y == z)
foo((x:Double, y:Double, z:Double, p:Double) => x < y && y < z && z < p)
//and so on...
我第一次尝试如下
def foo2(f:(_*)=>Boolean) = //do something with f
修改FOO但是,这是行不通的。
“用f做什么”真的有用吗?你能显示代码吗? – 2012-03-22 12:27:59
@ n.m。让我给一些背景。这是一个编译器插件。编译器插件将从函数的主体中提取一个逻辑公式。函数的参数是公式中的自由变量。 – dips 2012-03-22 13:02:12
您似乎会调用一个具有未知数量参数的函数。你能显示代码吗? – 2012-03-22 13:18:29