编写一个函数来交换数字,而无需在Scala中使用临时变量。函数参数是不可变的,那么如何避免使用临时变量来实现函数呢?
C / C ++中的解决方案是:
void swap(int a, int b) {
a = a - b;
b = b + a;
a = b - a;
cout << a << " " << b << endl;
}
Scala中的等效解决方案是什么,因为如果我没记错的话,def swap(a: Int, b: Int): Unit
中的a和b都是不可变的?
答案 0 :(得分:2)
正如已经建立的那样,它不能作为方法或函数来完成。您可以 进行的操作是使用构造函数参数创建一个class
,该参数可以是可变的。
class Swap(var a:Int, var b:Int) {
a ^= b
b ^= a
a ^= b
println(s"a:$a, b:$b")
}
现在,每次创建新的Swap
实例时,构造函数参数的值都将被交换。
val myswap = new Swap(4, 579) //sends "a:579, b:4" to STDOUT
一种毫无意义的锻炼。
答案 1 :(得分:1)