在 Kotlin 中,为什么 val 整数的值可以通过 inc() 方法重新分配?
考虑以下情况,
val x: Int = 0
val
变量无法更改,因此 x += 1
不起作用
编译器说 < code>Val 无法重新分配
为什么 x.inc()
工作正常,但
x.inc()
不能重新分配 0 中的值
到 1
Consider the following,
val x: Int = 0
val
variables cannot be changed so doing x += 1
wouldn't work
The compiler says Val cannot be reassigned
why then does x.inc()
work fine
doesn't x.inc()
reassign the value from 0
to 1
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
x.inc()
不会递增变量x
。相反,它返回一个比 x 的值大 1 的值。它不会改变x
。正如其文档所述:
这似乎是一种非常无用的方法。好吧,这就是 Kotlin 用来实现后缀/前缀
++
运算符的运算符重载的方法。例如,当您执行
a++
时,会发生以下情况:在这里您可以看到
inc
的返回值是如何使用的。x.inc()
does not increment the variablex
. Instead, it returns a value that is one more than the value ofx
. It does not changex
.As its documentation says:
That might seem like a very useless method. Well, this is what Kotlin uses to implement operator overloading for the postfix/prefix
++
operator.When you do
a++
, for example, the following happens:Here you can see how
inc
's return value is used.