首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Scala:编写一个函数在不使用临时变量的情况下就地交换数字

Scala:编写一个函数在不使用临时变量的情况下就地交换数字
EN

Stack Overflow用户
提问于 2019-04-01 06:23:27
回答 1查看 676关注 0票数 -7

在Scala中编写一个函数,在不使用临时变量的情况下就地交换一个数字。函数参数是不可变的,那么我们如何避免使用临时变量来实现函数呢?

C/C++的解决方案是:

代码语言:javascript
复制
void swap(int a, int b) {
    a = a - b;
    b = b + a;
    a = b - a;
    cout << a << " " << b << endl;
}

如果我没弄错的话,在def swap(a: Int, b: Int): Unit中a和b都是不可变的,那么在Scala中会有什么等价的解决方案呢?

EN

回答 1

Stack Overflow用户

发布于 2019-04-01 09:02:13

正如已经确定的那样,它不能作为方法或函数来完成。您可以做的是创建一个带有构造函数参数的class,该参数可以是可变的。

代码语言:javascript
复制
class Swap(var a:Int, var b:Int) {
  a ^= b
  b ^= a
  a ^= b
  println(s"a:$a, b:$b")
}

现在,每次创建新的Swap实例时,都会交换构造函数参数的值。

代码语言:javascript
复制
val myswap = new Swap(4, 579)  //sends "a:579, b:4" to STDOUT

这是一个相当无意义的练习。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55445999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档