Scala 函式高階操作 第六天

2021-09-06 14:10:58 字數 1813 閱讀 3295

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的值一一比較,如果一...

第六天學習

變數的作用域 區域性變數 在函式內部定義的變數,這個變數只能在函式內部使用,在全域性當中不能使用。使用就報錯了。全域性變數 在函式外部定義的變數,這個變數可以在全域性使用。但是我們一般不推薦使用全域性變數 因為可能會意外的修改掉變數的值。迫不得已不要用全域性變數 衝突處理原則 就近原則。而不是從上到...