在 kotlin 中更改参数内部变量的值

Posted

技术标签:

【中文标题】在 kotlin 中更改参数内部变量的值【英文标题】:Changing value of variable inside argument in kotlin 【发布时间】:2022-01-18 17:43:00 【问题描述】:

在 Java 中,您可以执行以下操作:

boolean a = true;
if(a = false) 
   //////

并且 a 将被设置为 false 并在此之后用作参数。但是在 kotlin 中,我找不到这样做的方法,除了:

var a = true
a = false
if(a) 


有没有更好的办法?

【问题讨论】:

IMO 的最佳方式就是将分配与if 分开,就像您所做的那样。很清楚,我相信 Kotlin 的设计目的是为了防止将赋值用作表达式。 您为什么要这样做? if 的主体永远不会被执行。无论如何,这段代码非常令人困惑。 Kotlin 明确禁止在其他任何地方使用分配。 【参考方案1】:

您可以以稍微不同的顺序内联执行此操作 - 首先写入要分配的值 (false),然后使用 also 范围函数来分配它:

var a = true
if(false.also  a = it ) 


但是,我不建议您在 Java 或 Kotlin 中执行此操作,因为这不是很可读。将作业写成单独的语句并没有什么不好。

【讨论】:

以上是关于在 kotlin 中更改参数内部变量的值的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript,当变量作为参数传递时更改函数内部的变量值[重复]

如何从 kotlin 中的内部对象类访问类级别变量

闭包的理解

不能在不同方法中定义的内部类中引用非最终变量

11函数进阶---闭包

[Kotlin] 内部类