我正在尝试在课堂上弄清this
的目的。考虑以下示例:
class TestMe {
var a: Int = 1
var b: Int = 2
fun setValA(value: Int) {
this.a = value
}
fun setValB(value: Int) {
b = value
}
}
val testInstance1 = TestMe()
val testInstance2 = TestMe()
testInstance1.setValA(3)
testInstance1.setValB(4)
println("instance 2A: ${testInstance2.a}, instance 2B: ${testInstance2.b}") // 1 2
println("instance 1A: ${testInstance1.a}, instance 1B: ${testInstance1.b}") // 3 4
似乎我可以简单地忽略this
值,结果将是相同的。我在这里想念什么吗?
非常感谢!
答案 0 :(得分:5)
是的,与Java相同,但是如果a
也是参数名称,则会出现问题:
fun setValA(a: Int) {
a = a
}
编译错误:
Val cannot be reassigned
然后您将不得不使用this
:
fun setValA(a: Int) {
this.a = a
}
答案 1 :(得分:2)
除了user7294900的答案外,this
只能在this.<property or method name>
中省略,还有许多其他用途: this::class
或
fun doSomething(other: OtherClass) {
other.doSomethingWith(this)
}