我一直在尝试执行以下操作:
作为锻炼
我需要创建一个具有某些功能的数据类。 一种方法将使用带有参数的接收器来验证参数是否大于类值 结果将是布尔值。
到目前为止,我有这个:
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
,该方法仅检查是否大于我发送的特定数字...
我以此方式调用
fun main() {
val isBigClub = club.isABigClub { this > 9 }
println(isBigClub)
}
按预期工作。
在阅读文档https://kotlinlang.org/docs/reference/lambdas.html#function-literals-with-receiver和其他帖子What is a purpose of Lambda's with Receiver? What is a "receiver" in Kotlin?时,无法在接受参数的同时使用接收器。
我想将比较逻辑封装在数据类中...类似这样
fun isTheBiggestClub(club: Int.(biggestClub: Int) -> Boolean) : Boolean {
return club(this.members, SOME_RECEIVED_VALUE )
}
我实际上想在上一个示例this > 9
类似club.isTheBiggestClub { this(10) }
我不知道如何发送或如何在退货时阅读它,还没有找到有关它的信息,甚至有可能吗?知道如何吗?
答案 0 :(得分:0)
您的club
方法返回一个布尔值,而isTheBiggestClub
方法返回一个String。这可能是问题所在。