当我尝试创建扩展函数来设置布尔值 true 或 false 时,如下所示。
Boolean.setTrue(){
this = true
}
Boolean.setFalse(){
this = false
}
它说预期变量。如何实现这一目标。
你无法改变它的值,这会打破很多假设,即使你可以改变它的值,因为布尔值是不可变的。
更一般地说,简化代码和使其变得更复杂之间存在着微妙的界限,在这种情况下,这会使代码变得复杂。我同意添加
String.splitByDot()
可能有意义,但替换惯用代码往往只会使代码变得更复杂,因为您开始想知道为什么必须替换代码。
抱歉,但这没有意义。只需使用
myBool=false
,任何人都可以理解并且无法获得更多可读性。
另外,Boolean
是不可变的,你正在尝试的无论如何都是不可能的。
我们必须小心不要过度使用扩展。这是 Kotlin(和其他)提供的最伟大的功能之一,但在某些示例中,例如试图改变一个非常简单的
Boolean
的分配方式,恕我直言,它变得很危险(幸运的是这是不可能的)。
您无法执行此操作的原因是您无法在扩展功能中重新分配接收器。
不可能更改布尔值,因为它是不可变的。
你不能这样做的原因是缺乏 Kotlin 扩展的实现,可能是因为 Kotlin 中的扩展是静态解析的(甚至可能是真正静态的)。 所以静态上下文中的“this”没有意义。