Scala學習(二)---入門基礎知識
阿新 • • 發佈:2018-12-25
元組使用:
元組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執行 scala myFile.scala asia<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>