首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala元组解构

Scala元组解构
EN

Stack Overflow用户
提问于 2010-05-06 04:46:29
回答 2查看 12.3K关注 0票数 23

我是Scala的新手,遇到了一个小问题,一直困扰着我。

并行初始化两个var效果很好: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)不允许真正的并行分配的原因是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-06 05:16:54

不幸的是,您不能在Scala中执行多个赋值。但您可以使用元组,如果它们适合您的问题:

代码语言:javascript
复制
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)

这样,xy就是一个具有两个值的元组。第一个值可以使用xy._1访问,第二个值可以使用xy._2访问。

票数 22
EN

Stack Overflow用户

发布于 2010-05-06 04:57:24

Scala有两种类型的变量:val和vars。Vals类似于Java的final变量,因此据我所知,将新值并行赋给val的唯一方法是:

代码语言:javascript
复制
scala> val (x, y) = (1, 2);

代码语言:javascript
复制
scala> val s = (3, 4);
s: (Int, Int) = (3,4)

scala> s._1
res1: Int = 3

scala> s._2
res2: Int = 4
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2776651

复制
相关文章

相似问题

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