为什么 Kotlin 布尔类型扩展函数返回的与我猜的不同?

why does the Kotlin boolean type extension function return different from I guess?

提问人:Junbeom Jeon 提问时间:11/8/2023 最后编辑:deHaarJunbeom Jeon 更新时间:11/8/2023 访问量:33

问:

我是新手,正在学习 Kotlin。

我认为下面的代码应该打印.但这实际上是打印.truefalse

我不知道为什么这段代码打印“false”。

谁能帮我?

fun Boolean.and(it: Boolean): Boolean = true

fun main() {
    val b = true.and(false)
    println(b)
}

我正在学习 Kotlin,我想知道类型扩展函数逻辑。Boolean

Kotlin 布尔值

评论

3赞 lukas.j 11/8/2023
您正在调用标准库 Boolean.and 方法,因为您无法通过定义扩展函数来重写方法。

答:

3赞 deHaar 11/8/2023 #1

你不想要的输出的原因是,你的定义实际上是在掩盖已经存在的乐趣,然后用它来代替你的。falseBoolean.and(…)

使用不同的名称并获得所需的结果:

fun Boolean.logicalAnd(it: Boolean): Boolean = true

fun main() {
    val b = true.logicalAnd(false)
    println(b)
}

输出:true

评论

1赞 Junbeom Jeon 11/8/2023
谢谢。
0赞 deHaar 11/9/2023
很高兴它有帮助!你能接受这个答案吗?
0赞 gidds 11/9/2023
如果您使用的是 IntelliJ 等 IDE,那么如果您让鼠标指针悬停在对 的调用上,它可能会显示一个弹出窗口,提供正在调用哪个函数的详细信息;这可以帮助解释这样的情况。.and(