Я пытался сделать следующее:
В качестве упражнения
Мне нужно создать класс данных с некоторыми функциями.Один метод будет использовать приемник с параметром, чтобы проверить, больше ли параметр, чем значение класса. Результат будет логическим.
Пока у меня есть это:
data class Club(val name: String, val members: Int) {
fun isABigClub(code: Int.() -> Boolean) : String {
val isBig = code(this.members)
return " Your club is a big club? ${isBig}"
}
}
Я создалклассный клуб с именем и количеством членов.
Я создаю вызов метода isABigClub
, который проверяет только то, превышает ли определенное число, которое я отправляю ...
Я вызываю его в этомway
fun main() {
val isBigClub = club.isABigClub { this > 9 }
println(isBigClub)
}
Работает как положено.
Чтение документации https://kotlinlang.org/docs/reference/lambdas.html#function-literals-with-receiver и других сообщений Какова цель Lambda с Receiver? Что такое «получатель» в Kotlin? не находит способа использовать мой получатель при принятии параметра.
Я хочу инкапсулировать логику сравнения внутри класса данных ... что-то вроде этого
fun isTheBiggestClub(club: Int.(biggestClub: Int) -> Boolean) : Boolean {
return club(this.members, SOME_RECEIVED_VALUE )
}
, куда я действительно хочу отправить что-то похожее на мой предыдущий пример this > 9
Что-то вроде club.isTheBiggestClub { this(10) }
Я не знаю, как отправить это или какпрочитайте его по возвращении, пока не нашли информации об этом, это канунвозможно?есть идеи как?