这是我的代码
var offset=0 //Global offset
fun foo(){
bar(offset)
}
fun bar(offset:Int){//Function argument offset
.......
.......
.......
if(baz()){
.......
.......
offset+=10 // I want to update the global offset, but function argument offset is reffered here
bar(offset)
}
}
fun baz():Boolean{
.......
.......
}
如何在功能栏(offset:Int)中引用全局变量“ offset”? 在科特林不可能吗?
答案 0 :(得分:1)
在这种情况下,您可以通过在文件级别变量前加上包名称来引用它:
package x
var offset = 0 // Global offset
fun bar(offset: Int) { // Function argument offset
x.offset += 10 // Global offset
}
fun main(args: Array<String>) {
bar(5)
println(offset) // Global offset
}
答案 1 :(得分:1)
在kotlin中,函数参数是不可变的(是val,不是var!),因此,您无法在bar函数内部更新offset参数。
最后,如果将这些代码放在类中,则可以通过'this'关键字访问与函数参数名称相同的类中的全局变量,如下所示:
class myClass{
var offset=0 //Global offset
fun foo(){
bar(offset)
}
fun bar(offset:Int){//Function argument offset
.......
if(baz()){
.......
this.offset+=10 // I want to update the global offset, but function argument offset is reffered here
.......
}
}
fun baz():Boolean{
.......
}
}