У меня есть функция Foo, которая принимает булеву функциюScala булева функция абстракция
def foo(f:(_)=>Boolean) = //do something with f
Я могу назвать Foo следующего
foo((x:Int) => x == 0)
Теперь я хочу изменить Foo принять любую функцию, которая возвращает логическое значение , например. модифицированный 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...
Моя первая попытка была изменить Foo следующим
def foo2(f:(_*)=>Boolean) = //do something with f
Но это не работает.
Что действительно делает «делать что-то с f»? Можете ли вы показать код? –
@ н.м. Позвольте мне дать некоторый контекст. Это для плагина компилятора. Плагин компилятора извлечет логическую формулу из тела функции. Аргументами функций являются свободные переменные в формуле. – dips
Кажется, вы вызываете функцию с неизвестным числом аргументов. Можете ли вы показать код? –