Programming in Scala (Second Edition) 读书笔记4

1.Tuple和List一样都是不可变对象(immutalbe),但是Tuple的元素可以是不同的类型

    val myTuple = ("A", 1, "park", 3.13359 )
    println(myTuple._1 )  // A
    println(myTuple._2)  // 1
    println(myTuple._3)  // park

创建Tuple只需把元素放在括号里面就可以了,上面创建了一个Tuple4类的实例,Tuple4在scala中的定义是这样的

/** A tuple of 4 elements; the canonical representation of a [[scala.Product4]].
 *
 *  @constructor  Create a new tuple with 4 elements. Note that it is more idiomatic to create a Tuple4 via `(t1, t2, t3, t4)`
 *  @param  _1   Element 1 of this Tuple4
 *  @param  _2   Element 2 of this Tuple4
 *  @param  _3   Element 3 of this Tuple4
 *  @param  _4   Element 4 of this Tuple4
 */
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
case class Tuple4[+T1, +T2, +T3, +T4](_1: T1, _2: T2, _3: T3, _4: T4)
  extends Product4[T1, T2, T3, T4]
{
  override def toString() = "(" + _1 + "," + _2 + "," + _3 + "," + _4 + ")"
  
}

类似5个元素的Tuple是Tuple5的实例,6个元素的Tuple是Tuple6的实例

因此就可以解释为什么会用 _1, _2, _3等来引用Tuple中的元素了

Tuple4定义中的类型参数前面有 + 号,这个代表 covarience参数,以后会深入讲解

2. Set有两类, 不可变的和可变的,名字相同,默认创建不可变的Set对象

wKiom1SJYMeBdQOaAAF8Nvro-Is758.jpg

    var jetSet = Set("Bench", "Audi", "Tesilla")
    jetSet += "LuHu"
    println(jetSet.contains("Bicycle"))


To add a new element to a set, you call + on the set, passing in the new element. Both mutable and immutable sets offer a + method, but their behavior

differs. Whereas a mutable set will add the element to itself, an immutable

set will create and return a new set with the element added

对于immutable的Set ,+ 运算创建一个新的Set

对于mmutalbe的Set, +运算添加元素到它自己


3. Map与Set类似,也有immuatlbe和mutable两种实现

4. 读取文件

import scala.io.Source

object TestMain {
  def main(args: Array[String]) {

	  var lines = Source.fromFile("E:/testRead.txt").getLines
	  lines.foreach(println)

  }
}


你可能感兴趣的:(scala)