作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道传递给函数的参数将被视为“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 如下所示:
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/
我是一名优秀的程序员,十分优秀!