scala编程第17章学习笔记(4)——元组

时间:2023-01-23 19:21:28

元组可以把固定数量的条目组合在一起以便于作为整体传送。不像数组或列表,元组可以保存不同类型的对象。

元组常用来返回方法的多个值。例如,下面的方法找到集合中的最长单词并返回它的索引:

scala> def longestWord(words: Array[String]) = {
| var word = words(0)
| var idx = 0
| for (i <- 1 until words.length)
| if (words(i).length > word.length) {
| word = words(i)
| idx = i
| }
| (word, idx)
| }
longestWord: (words: Array[String])(String, Int)

以下是方法用例:

scala> val longest = longestWord("The quick brown fox".split(" "))
longest: (String, Int) = (quick,1)

要访问元组的元素,可以使用方法_1访问第一个元素,_2访问第二个,以此类推:

scala> longest._1
res3: String = quick scala> longest._2
res4: Int = 1

而且,你还可以把元组的每个元素赋值给它自己的变量,如下:

scala> val (word, idx) = longest
word: String = quick
idx: Int = 1 scala> word
res5: String = quick

另外,如果你去掉了括号,将得到不同的结果:

scala> val word, idx = longest
word: (String, Int) = (quick,1)
idx: (String, Int) = (quick,1)

scala编程第17章学习笔记(4)——元组的更多相关文章

  1. scala编程第17章学习笔记(3)

    可变(mutable)集合与不可变(immutable)集合 为了更易于完成不可变集合到可变集合的转换,或者反向转换,Scala提供了一些语法糖.纵使不可变集和映射并不支持真正的+=方法,Scala还 ...

  2. scala编程第17章学习笔记(2)——集和映射

    默认情况下在使用“Set”或“Map”的时候,获得的都是不可变对象.如果需要的是可变版本,需要先写明引用. 如果同一个源文件中既要用到可变版本,也要用到不可变版本的集合或映射,方法之一是引用包含了可变 ...

  3. scala编程第17章学习笔记(1)——集合类型

    列表 列表的初始化及对其首尾的访问: scala> val colors = List("red", "blue", "green") ...

  4. scala编程第16章学习笔记(3)——List类的高阶方法

    列表间映射:map.flatMap和foreach 1.xs map f 操作返回把函数f应用在xs的每个列表元素之后由此组成的新列表.如: scala> List(1, 2, 3) map ( ...

  5. scala编程第16章学习笔记(2)

    转换列表:toIterator, toArray,copyToArray List类的toArray方法将递归存放的列表转换为连续存放的数组 Array类的toList方法将连续存放的数组转换为递归存 ...

  6. scala编程第16章学习笔记(1)

    List列表的基本操作 head方法获得列表的第一个元素 tail方法获得列表除第一个元素之外的其它元素 isEmpty:判断列表是否为空,空的话返回真 last:获得列表最后一个元素 init:获得 ...

  7. scala编程第19章学习笔记(1)——类型参数化

    一.queues函数式队列 函数式队列是一种具有以下三种操作方式的数据结构: head 返回队列的第一个元素. tail 返回除第一个元素之外的队列. scala> import scala.c ...

  8. scala编程第18章学习笔记——有状态的对象

    银行账号的简化实现: scala> class BankAccount{ | private var bal: Int = 0 | def balance: Int = bal | def de ...

  9. scala编程第16章学习笔记(4)——List对象的方法

    通过元素创建列表:List.apply List(1, 2, 3) 等价于List.apply(1, 2, 3): scala> List.apply(1, 2, 3) res0: List[I ...

随机推荐

  1. (转载)四种常见的 POST 提交数据方式

    (转载)http://www.imququ.com/post/four-ways-to-post-data-in-http.html HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS ...

  2. poj1426 Find The Multiple

    Find The Multiple Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 14622   Accepted: 593 ...

  3. vertical-align 和 img属性 和 鼠标样式

    一.vertical-align 一)定义:定义行内元素的基线相对于该所在基线的垂直对齐.(只针对行类块inline/inline-block/<img>,块级不适用!) 二)语法:  三 ...

  4. 总账balance表

    SELECT gb.period_net_dr, --期间发生额        gb.period_net_cr, --期间发生额        gb.project_to_date_dr, --账户 ...

  5. 如何做好技术Team Leader

    背景 互联网公司的技术团队管理通常分为2个方向:技术管理和团队管理,互联网公司的技术TL与传统软件公司的PM还是有很大的区别,传统软件公司的PM更多注重于对项目的管理包括项目任务拆解.项目进度以及风险 ...

  6. 2018-2019-2 网络对抗技术 20165318 Exp4 恶意代码分析

    2018-2019-2 网络对抗技术 20165318 Exp4 恶意代码分析 原理与实践说明 实践目标 实践内容概述 基础问题回答 实践过程记录 1.使用schtasks指令监控系统 2.使用sys ...

  7. python - setitem&sol;getitem&sol;delitem类的内置方法

    # class 内置方法: # __setitem__ # __getitem__ # __delitem__ class Test(): X = 100 def __getitem__(self, ...

  8. iOS使用mask切割不规则图案

    起点,终点要闭合: CGPathAddQuadCurveToPoint(path, NULL, viewSize.width * 0.5, viewSize.height, viewSize.widt ...

  9. SHELL &lpar;2&rpar; —— Shell变量的核心基础知识和实践

    摘自:Oldboy Linux运维——SHELL编程实战 Shell变量:用一个固定的字符串(也可能是字符.数字等的组合)代替更多.更复杂的内容,该内容里可能还会包含变量.路径.字符串等其它的内容. ...

  10. Linux安装ElasticSearch与MongoDB分布式集群环境下数据同步

    ElasticSearch有一个叫做river的插件式模块,可以将外部数据源中的数据导入elasticsearch并在上面建立索引.River在集群上是单例模式的,它被自动分配到一个节点上,当这个节点 ...