class Family() {
fun addMember(name: String) {}
inline operator fun invoke(body: Family.() -> Unit) {
body()
}
}
После использования функции вызова оператора я могу сделать что-то вроде этого:
val family = Family().invoke { this:
addMember("Android")
}
Я видел структуры кода, в которых объявление делается просто так.
val family = Family { this:
addMember("Android")
}
В текущей ситуации вызов вызова может быть вызван для экземпляра, т.е.
val family = Family()
family {
addMember(...)
}
Если я правильно понял, что вы хотите создать новый экземпляр Family и применить блок к объекту, вы можете сделать это, поместив функцию под компаньоном.
class Family {
fun addMember(name: String) {}
companion object {
inline operator fun invoke(body: Family.() -> Unit): Family {
return Family().apply(body)
}
}
}
Сейчас:
val family = Family {
addMember(...)
}