在Kotlin中交换函数
有没有更好的方法来写java通用的交换功能,而不是java 如何在Java中编写基本的交换功能 。
有没有kotlin语言功能可以使通用交换功能更简洁直观?
Kotlin根本不需要交换功能。 您可以使用现有的功能,例如:
var a = 1 var b = 2 a = b.also { b = a } println(a) // print 2 println(b) // print 1
如果你想写一些非常可怕的代码,你可以有这样的功能:
operator fun <T> T.invoke(dummy: () -> Unit): T { dummy() return this }
这将允许你写这样的代码
a = b { b = a }
请注意,我不建议这样做。 只是显示它是可能的。
编辑:感谢@hotkey的评论
我相信交换两个变量的代码很简单 – 不要试图简化它。
恕我直言,最优雅的形式是:
var a = 1 var b = 2 run { val temp = a; a = b; b = temp } println(a) // print 2 println(b) // print 1
优点:
- 意图是大声而清晰的。 没有人会误解这一点。
-
temp
不会留在范围内。