Я новичок в 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
для обработки обоих?