Kotlin 在匿名lambda中返回false
这是我的密码Kotlin 在匿名lambda中返回false,kotlin,Kotlin,这是我的密码 fun已加入(用户:用户):布尔值{ val member=requireNotNull(guild.getMember(user)){return false} 返回已加入。包含(成员) } 当成员为null时,函数“isjoin”是返回false还是仅匿名函数返回false(因此成员为false)? 如果匿名函数返回false,那么如何更改代码以返回函数“isjoin”?在Kotlin中,lambdas的返回自动默认为从最里面的函数返回,这意味着整个函数将返回false。此外
fun已加入(用户:用户):布尔值{
val member=requireNotNull(guild.getMember(user)){return false}
返回已加入。包含(成员)
}
当成员为null时,函数“isjoin”是返回false还是仅匿名函数返回false(因此成员为false)?如果匿名函数返回false,那么如何更改代码以返回函数“isjoin”?在Kotlin中,lambdas的返回自动默认为从最里面的函数返回,这意味着整个函数将返回false。此外,提供了一种更优雅的方式来编写:
val member=guild.getMember(用户)?:返回false
在Kotlin中,带有返回的lambdas自动默认为从最里面的函数返回,这意味着您的整个函数将返回false。此外,提供了一种更优雅的方式来编写:
val member=guild.getMember(用户)?:返回false
您可以像这样重新编写isjoin()
函数:
fun isJoined(user: User): Boolean =
guild.getMember(user)?.let { joined.contains(it) } == true
它将执行以下操作:
- 当
返回一个成员时,它调用guid.GetMember()
,这将返回一个布尔值。将布尔值与joined.contains(member)
进行比较是一个noop,因此返回==true
的结果包含(成员)
- 当
返回guild.GetMember()
时,不调用null
块,表达式变为let
,返回null==true
false
fun isJoined(user: User): Boolean {
val nullableMember = guild.getMember(user)
return if (nullableMember == null) false else joined.contains(nullableMember)
}
您可以像这样重新编写
isjoin()
函数:
fun isJoined(user: User): Boolean =
guild.getMember(user)?.let { joined.contains(it) } == true
它将执行以下操作:
- 当
返回一个成员时,它调用guid.GetMember()
,这将返回一个布尔值。将布尔值与joined.contains(member)
进行比较是一个noop,因此返回==true
的结果包含(成员)
- 当
返回guild.GetMember()
时,不调用null
块,表达式变为let
,返回null==true
false
fun isJoined(user: User): Boolean {
val nullableMember = guild.getMember(user)
return if (nullableMember == null) false else joined.contains(nullableMember)
}
谢谢你的回答。祝你今天愉快:谢谢你的回答。祝你今天愉快:D