1. 程式人生 > >Scala學習(二)---入門基礎知識

Scala學習(二)---入門基礎知識

元組使用:

元組List一樣而是不能改變的結構,但是元組內每個元素的型別可以不同,List也可以但是List是推斷為any,而Tuple推斷為各個元素的型別。元組的作用一般為在方法裡返回對個物件,元組對其內元素的操作為._來取元素(其是基於1開始索引而不是0)。
<span style="font-size:18px;"> val pair = (1,"Hi")
scala> print(pair._1)
1
</span>

集(set)和對映(map)

set和map都可分為可變和不可變兩種特質,set可以理解為集合有很多種方法可以設定,可以參考其api,map主要是對映,常見的為<key,value>對,比如其map初始化可以為:
<span style="font-size:18px;">val treasureMap = Map[Int,String]()
treasureMap += (1 -> "Hello")
treasureMap += (2,“world”) //這種方式它內部會隱義轉換為2 -> "world" 這種形式</span>

檔案操作

檔案操作主要是引用scala.io包中的Source類,比如以下指令碼,實現的是對另一個檔案的長度統計、格式化輸入等。儲存為myFile.scala
<span style="font-size:18px;">import scala.io.Source

def widthOfLength(s : String) = s.length.toString.length
def lengthOfLine(s:String) = s.toString.length

if (args.length>0){
  val lines = Source.fromFile(args(0)).getLines.toList  //把檔案轉化list並存在記憶體中
  val longestLine = lines.reduceLeft((a,b) => if(a.length>b.length) a else b)

  val maxWidth = widthOfLength(longestLine)
  val maxLength = lengthOfLine(longestLine)
  val sparkWidth = maxLength+maxWidth+2
  println("*"*(sparkWidth))
  for(line <- lines){
    val numSpaces = maxWidth-widthOfLength(line)
    val padding = " " * numSpaces
    val paddingLast = " "*(sparkWidth-maxWidth-line.length-2)
    println(padding+line.length + "|"+line+paddingLast+"*")
  }

  println("*"*(sparkWidth))
}
</span>
執行 scala myFile.scala asia