Как использовать приемник со значением параметра в Kotlin? - PullRequest
0 голосов
/ 06 июня 2019

Я пытался сделать следующее:

В качестве упражнения

Мне нужно создать класс данных с некоторыми функциями.Один метод будет использовать приемник с параметром, чтобы проверить, больше ли параметр, чем значение класса. Результат будет логическим.

Пока у меня есть это:

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) }

Я не знаю, как отправить это или какпрочитайте его по возвращении, пока не нашли информации об этом, это канунвозможно?есть идеи как?

1 Ответ

0 голосов
/ 06 июня 2019

Ваш метод club возвращает логическое значение, а метод isTheBiggestClub возвращает строку. Это может быть проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...