scala 程式設計思想 map和reduce

2021-10-02 11:52:22 字數 1869 閱讀 8939

package com.test1

object scala09_test10

val v:vector[int] = vector(1,2,3,4)

v.foreach(show)

v.foreach(n=>)

var s = ""

val duck = "duck".tovector

duck.foreach(n=>s=s+n+":")

println(s)

val v1:vector[int] = vector(19,1,7,3,2,14)

println(v1.sorted)

println(v1.sortwith((i,j)=>junit)

}val cl = new later( ()=>println("now"))

cl.call()

//甚至可以將匿名函式賦給乙個var或val

val later1 = ()=>println("now")

val later2 = ()=>println("now")

//map和reduce在前乙個原子中,我們通過foreach這個

val v2 = vector(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4)

v2.map(n=>(n,n+1))

println(v2.map(n=>(n,1)))

}}

在前乙個原子中,我們通過foreach這個例子學習了匿名函式數的知識,儘管foreach非常有用,但是仍有侷限性 ,

因為使用它只是為了其***,

初學scala者肯定會對:: , +:, :+, :::, +++,這些操作有些疑惑,今天總結一下,方便大家的使用

package test

/** * scala中的:: , +:, :+, :::, +++, 等操作;

*/object listtest

}

推導

package com.test1

object scala09_test11

//println(sum)

>result = result :+ n

result

}val v = vector(1,2,3,5,6,7,8,10,13,14,17)

println(evengt5(v))

//注意,rsult並非常見的val,而是var,因此我們可以修改result.

//一般情況下,我們總是嘗試使用val,

def yielding(v:vector[int]):vector[int]=yield n

result

}val v20 = vector(1,2,3,5,6,7,8,10,13,14,17)

println(yielding(v20))

case class persion(name:string)

//基於型別的模式匹配

//我們已經看過基於值的模式匹配,還可以按照值的型別來匹配。下面的方法並不關心其引數的型別

def acceptanything(x:any):string="

case _ =>"i don't know what that is"}}

println(acceptanything(5))

println(acceptanything(25))

println(acceptanything(persion("wjj")))

println(acceptanything(vector(1,2,5)))

}}

Scala函式式程式設計思想

scala是純物件導向語言,而函式式程式設計是它的核心也是它最大的優勢點 一些重要概念 純函式 pure function 或函式的純粹性 purity 即沒有 side effect 是狀態的變化 例子 可見第二個函式對x有 所以第乙個函式為純函式 函式式程式設計的優點 生產效率高,簡潔高效 對於...

51 scala程式設計思想筆記 淺嚐反射

51.scala程式設計思想筆記 淺嚐反射 反射表示拿起乙個物件並將其放在鏡子前面,這樣它就可以發現自身的奧秘。例如trait會自動 將乙個tostring方法新增到任何類中,如下 object echoargs2 size val s2 new solid2 47 s2 is solid2 47 ...

scala中map和foreach的區別

scala中的集合物件都有foreach和map兩個方法。兩個方法的共同點在於 都是用於遍歷集合物件,並對每一項執行指定的方法。而兩者的差異在於 foreach無返回值 準確說返回void map返回集合物件。見如下 及執行結果 b.getclass 得到的是void,而c.getclass得到的是...