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

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

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

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)
时间: 2024-08-11 03:37:17

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

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

列表 列表的初始化及对其首尾的访问: scala> val colors = List("red", "blue", "green") colors: List[String] = List(red, blue, green) scala> colors.head res15: String = red scala> colors.tail res16: List[String] = List(blue, green) 数组 创

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

默认情况下在使用“Set”或“Map”的时候,获得的都是不可变对象.如果需要的是可变版本,需要先写明引用. 如果同一个源文件中既要用到可变版本,也要用到不可变版本的集合或映射,方法之一是引用包含了可变版本的包名: scala> import scala.collection.mutable import scala.collection.mutable 与以往一样, 不可变集可以用Set指代,但现在还可以用mutable.Set指代可变集.举例如下: scala> val mutaSet =

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

可变(mutable)集合与不可变(immutable)集合 为了更易于完成不可变集合到可变集合的转换,或者反向转换,Scala提供了一些语法糖.纵使不可变集和映射并不支持真正的+=方法,Scala还是为此提供了+=的语法解释. scala> val people = Set("Nancy", "Jane") people: scala.collection.immutable.Set[String] = Set(Nancy, Jane) scala>

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

银行账号的简化实现: scala> class BankAccount{ | private var bal: Int = 0 | def balance: Int = bal | def deposit(amount: Int) { | require(amount > 0) | bal += amount | } | | def withdraw(amount: Int): Boolean = | if (amount > bal) false | else{ | bal -= am

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

通过元素创建列表:List.apply List(1, 2, 3) 等价于List.apply(1, 2, 3): scala> List.apply(1, 2, 3) res0: List[Int] = List(1, 2, 3) 创建数值范围:List.range List.range(from, until),可以创建从from开始到until减一的所有数值的列表.注:尾部until不在范围之内. 还有一个版本的range可以带step值作为第三参数.这个操作可以产生从from开始的,间隔

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

一.queues函数式队列 函数式队列是一种具有以下三种操作方式的数据结构: head 返回队列的第一个元素. tail 返回除第一个元素之外的队列. scala> import scala.collection.immutable.Queue import scala.collection.immutable.Queue scala> val q = Queue(1, 2, 3) q: scala.collection.immutable.Queue[Int] = Queue(1, 2, 3

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

列表间映射:map.flatMap和foreach 1.xs map f 操作返回把函数f应用在xs的每个列表元素之后由此组成的新列表.如: scala> List(1, 2, 3) map (_ + 1) res0: List[Int] = List(2, 3, 4) scala> val words = List("the", "quick", "brown", "fox") words: List[Strin

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

转换列表:toIterator, toArray,copyToArray List类的toArray方法将递归存放的列表转换为连续存放的数组 Array类的toList方法将连续存放的数组转换为递归存放的列表 scala> val arr = abcde.toArray arr: Array[Char] = Array(a, b, c, d, e) scala> arr.toList res24: List[Char] = List(a, b, c, d, e) copyToArray方法可以

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

List列表的基本操作 head方法获得列表的第一个元素 tail方法获得列表除第一个元素之外的其它元素 isEmpty:判断列表是否为空,空的话返回真 last:获得列表最后一个元素 init:获得除最后一个元素之外的元素 reverse:反转列表 前缀与后缀:drop.take.splitAt xs take n 返回xs列表的前n个元素,如果n大于xs.length,则返回整个xs. xs drop n 返回xs列表除前n个元素之外的所有元素,如果n大于xs.length,则返回空列表.