Допустим, у меня есть:Тип подписи для функции Котлин с параметрами по умолчанию
fun addInvoker(adder:() -> Int = ::add): Int{
return adder()
}
fun add(num1:Int = 1, num2:Int = 1): Int{
return num1 + num2
}
Я получаю сообщение об ошибке, так как :: добавить два параметра, но подпись addInvoker требует, чтобы иметь нулевые параметры. Однако, если я изменить его на:
fun addInvoker(adder: (Int, Int) -> Int = ::add): Int{
return adder()
}
fun add(num1:Int = 1, num2:Int = 1): Int{
return num1 + num2
}
Тогда я не могу ссылаться на сумматор(), то есть, ссылающегося добавить свои аргументы по умолчанию.
Итак, есть ли способ, которым я могу сделать: добавить аргумент по умолчанию для invokeAdder, но все же вызвать add с adder()
, вызывая при этом аргументы по умолчанию?
попробуйте сделать обертку с параметрами параметров с нулевыми параметрами по сравнению с сумматором, я не знаю, есть ли у вас синтаксический сахар в kotlin для создания ad hoc анонимных функций в другом объявлении функции. Что-то вроде '.... = :: (() -> (add()))): Int {.....' –
понятия не имею о языке, но в целом создание обертки, похоже, решает вашу проблему. – HuStmpHrrr
Yup, создавая обертку, работает, но мне интересно, есть ли способ сделать это с помощью сигнатур типов. Я ожидаю, что это невозможно. – pondermatic