布尔扩展函数

问题描述 投票:0回答:4

当我尝试创建扩展函数来设置布尔值 true 或 false 时,如下所示。

Boolean.setTrue(){
 this = true
}

Boolean.setFalse(){
 this = false
}

它说预期变量。如何实现这一目标。

boolean kotlin kotlin-extension
4个回答
6
投票

你无法改变它的值,这会打破很多假设,即使你可以改变它的值,因为布尔值是不可变的。

更一般地说,简化代码和使其变得更复杂之间存在着微妙的界限,在这种情况下,这会使代码变得复杂。我同意添加

String.splitByDot()
可能有意义,但替换惯用代码往往只会使代码变得更复杂,因为您开始想知道为什么必须替换代码。


3
投票

抱歉,但这没有意义。只需使用

myBool=false
,任何人都可以理解并且无法获得更多可读性。 另外,
Boolean
不可变的,你正在尝试的无论如何都是不可能的。

我们必须小心不要过度使用扩展。这是 Kotlin(和其他)提供的最伟大的功能之一,但在某些示例中,例如试图改变一个非常简单的

Boolean
的分配方式,恕我直言,它变得很危险(幸运的是这是不可能的)。


2
投票

您无法执行此操作的原因是您无法在扩展功能中重新分配接收器。

不可能更改布尔值,因为它是不可变的。


0
投票

你不能这样做的原因是缺乏 Kotlin 扩展的实现,可能是因为 Kotlin 中的扩展是静态解析的(甚至可能是真正静态的)。 所以静态上下文中的“this”没有意义。

© www.soinside.com 2019 - 2024. All rights reserved.