加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 操纵元组

发布时间:2020-12-16 19:19:55 所属栏目:安全 来源:网络整理
导读:有没有办法在不使用临时变量和启动新语句的情况下操作元组的多个值? 假设我有一个返回元组的方法,我想用内联这些值做一些事情. 例如如果我想在某个点拆分一个字符串并反转这些部分 def backToFront(s: String,n:Int) = s.splitAt(n)... 我可以 val (a,b) =
有没有办法在不使用临时变量和启动新语句的情况下操作元组的多个值?

假设我有一个返回元组的方法,我想用内联这些值做一些事情.

例如如果我想在某个点拆分一个字符串并反转这些部分

def backToFront(s: String,n:Int) = s.splitAt(n)...

我可以

val (a,b) = s.splitAt(n)
b + a

(需要临时变量和新声明)或

List(s.splitAt(n)).map(i => i._2 + i._1).head

(工作,但似乎有点脏,为此创建一个单独的元素列表)或

s.splitAt(n).swap.productIterator.mkString

(适用于这个特定的例子,但只是因为碰巧有一个交换方法可以做我想要的,所以它不是很一般).

元组上的压缩方法似乎只适用于列表元组.

另一个例子,你怎么能在一个语句中将元组(‘a,’b,’c)变成(‘b,’a,’c)?

解决方法

元组只是方便的返回类型,并不假设您将使用它进行复杂的操作.在scala论坛上也有类似的 discussion.

关于最后一个例子,找不到比模式匹配更好的东西.

('a,'b,'c) match { case (a,b,c) => (b,a,c) }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读