在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不会留在范围内。