gpt4 book ai didi

kotlin - 如何将变量从main函数传递给另一个函数并修改它? ( Kotlin )

转载 作者:行者123 更新时间:2023-12-05 02:32:46 32 4
gpt4 key购买 nike

我知道传递给函数的参数将被视为“val”,即使变量被初始化为“var”。但这对我来说一直是个问题。在下面的示例代码中,我想通过使用函数“changeNum”修改变量“num”的值。但当然,Kotlin 不允许我修改它。我该如何解决这个问题?如何使用函数“changeNum”修改变量“num”?

fun main() {
var num: Int = 5
changeNum(num)
}

fun changeNum(num: Int){
num += 2
print(num)
}

最佳答案

Kotlin 是按值传递的,因此您不能直接使用 Int 等基本类型进行传递。

通常的方法是只返回一个新值而不是修改您接收到的参数(一种函数式方法)。从调用代码的角度来看,它更清晰:

fun main() {
var num: Int = 5
num = changeNum(num)
}

fun changeNum(num: Int): Int {
val newValue = num + 2
print(newValue)
return newValue
}

如果你真的想改变变量而不是返回一个新值,这里有两种我正在考虑的方法:

  1. 将所有操作这个值的代码放到一个类中,并使局部变量成为该类的属性(这是面向对象的方法)
  2. 将这个原始变量放入一个类中,并传递该类的一个实例

选项 1 如下所示:

class SomeClass(var num: Int) {

fun changeNum() {
num += 2
print(num)
}
}

fun main() {
val container = SomeClass(5)
container.changeNum()
}

选项 2 如下所示:

class SomeMutableContainer(var num: Int)

fun main() {
val container = SomeMutableContainer(5)
changeNum(container)
}

fun changeNum(container: SomeMutableContainer) {
container.num += 2
print(container.num)
}

关于kotlin - 如何将变量从main函数传递给另一个函数并修改它? ( Kotlin ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71156632/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com