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)
    ,这将返回一个布尔值。将布尔值与
    ==true
    进行比较是一个noop,因此返回
    包含(成员)
    的结果
  • 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)
    ,这将返回一个布尔值。将布尔值与
    ==true
    进行比较是一个noop,因此返回
    包含(成员)
    的结果
  • 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