Параметр функции, который принимает функции с некоторыми параметрами или без них

#android #kotlin #parameters

Вопрос:

Я хочу иметь возможность передавать как fun1, так и fun2 в параметр MyAction класса MyAdapter без добавления MyClass? параметр для fun2. Функция fun2 не использует параметр MyClass, поэтому, если я добавлю его, у меня будет параметр, который не используется.

Есть ли способ сделать это? при поиске метода я нашел информацию о vararg, но, похоже, в этом сценарии он не работает.

 class MyAdapter(
    var myAction: (myClass: MyClass?) -> Unit
)

fun fun1(myClass: MyClass?) {
    Log.d("fun selected")
    myClass.print()
}

fun fun2() {
    Log.d("fun selected")
}

fun initAdapter(){
    val adapter1 = MyAdapter(::fun1);
    val adapter2 = MyAdapter(::fun2);
}
 

Ответ №1:

Вы всегда можете просто передать прокси — функцию, к MyAdapter которой обращаются fun2 . Так что что-то вроде этого:

 MyAdapter { fun2() }