1、字串高階操作
多行val b =
"""|這是乙個多行字串
|hello
|world
""".stripmargin
interpolation(插值)
val name = "messi"
println(s"hello:$name")
val team = "ac"
println(s"hello:$name, welcome to $team")
def add =(x:int,y:int)=>
//(x:int,y:int)為匿名函式
add(2,3)
3、curry函式
//將接收兩個引數的乙個函式,轉換成2個
def sum(a:int, b:int) = a+b
println(sum(1,2))
def sum2(a:int)(b:int) = a+b
println(sum2(2)(3))
4、高階函式
map,filter,flatmap,foreach,reduce等
val l = list(1,2,3,4,5,6,7,8)
//map:逐個去操作集合中的每個元素
l.map((x:int) => x+1) //(x:int)相當於入參,x+1為作用在每個元素上的函式
簡:l.map(x => x+1) //x只有乙個元素,才可以省括號,不然就得l.map((x,y) => x+1);;int因為可以自動匯出,所以可以省略
l.map(_*2)
l.map(_*2).foreach(println)
l.map(_*2).filter(_>8).foreach(println)
l.take(4) //取前4個元素
l.reduce(_+_) //兩兩相加 1+2 3+3 6+4 10+5 ....
l.reduce(_-_) //-34
l.reduceleft(_-_) //-34 (((((((1-2)-3)-4)-5)-6)-7)-8)
l.reduceright(_-_) //-4 (1-(2-(3-(4-(5-(6-(7-8)))))))
l.fold(0)(_-_) //int = -36
val f = list(list(1,2),list(3,4),list(5,6))
f.flatten //list(1,2,3,4,5,6)
f.map(_.map(_*2)) //list(list(2,4),list(6,8),list(10,12))
f.flatmap(_.map(_*2)) //list(2,4,6,8,10,12)
讀取檔案
val txt = scala.io.source.fromfile("/users/terry/hello.txt").mkstring
println(txt)
val l = list(txt)
l.flatmap(_.split(",")).map(x=>(x,1)).foreach(println)
l.flatmap(_.split(",")).map(x=>(x,1)).reduce(_+_)
//鏈式程式設計
5、偏函式
//a 輸入引數型別 b 輸出引數型別
def saychinese:partialfunction[string,string]=
println(saychinese("akiho yoshizawa"))
//偏函式,被包在花括號內沒有match的一組case語句
第六天 風氣
第六天 風氣 答 人有了,就得定規矩,否則就是一幫烏合之眾,而不是團隊。1必須朝九晚五。嚴格控制員工手裡有辦公室鑰匙。下班必須準時鎖門,員工準時離開。斷公司外網。要加班必須上級主管簽字,更不准在辦公室留宿,洗澡。這一條很重要,不要讓程式設計師活得像個浪子,精神恍惚,口中神叨,鬍子拉碴,這都是浮動工作...
開課第六天
今天是開課第六天,老師上午沒有講課,講了一上午的題,下午又講了新知識,如下 1 順序結構 從上到下順序進行。2 分支結構 if boolean表示式 else switch 值 case 值 break case 值 break switch 執行流程,switch的值和case的值一一比較,如果一...
第六天學習
變數的作用域 區域性變數 在函式內部定義的變數,這個變數只能在函式內部使用,在全域性當中不能使用。使用就報錯了。全域性變數 在函式外部定義的變數,這個變數可以在全域性使用。但是我們一般不推薦使用全域性變數 因為可能會意外的修改掉變數的值。迫不得已不要用全域性變數 衝突處理原則 就近原則。而不是從上到...