我是Scala的新手,遇到了一个让我烦恼的小打嗝.
并行初始化两个变量很有用: var (x,y) = (1,2)
但是,我无法找到并行分配新值的方法: (x,y) = (x+y,y-x) //invalid syntax
我最终写了这样的东西: val xtmp = x+y; y = x-y; x = xtmp
我意识到编写功能代码是避免这种情况的一种方法,但在某些情况下,vars只是更有意义.
我有两个问题:
1)有更好的方法吗?我错过了什么吗?
2)不允许真正的并行分配的原因是什么?
Mic*_*mer 22
不幸的是,您无法在Scala中执行多项任务.但是你可以使用元组,如果它们适合你的问题:
scala> var xy = (1,2)
xy: (Int, Int) = (1,2)
scala> xy = (xy._1 + xy._2, xy._2 - xy._1)
xy: (Int, Int) = (3,1)
Run Code Online (Sandbox Code Playgroud)
这样,xy是一个有两个值的元组.第一个值可以使用xy._1,第二个值可以使用xy._2.
| 归档时间: |
|
| 查看次数: |
9298 次 |
| 最近记录: |