用scala語言做spark專案也有一年了,雖然scala語言也是執行在jvm上面,但其是動態語言,還有很多之前從來沒見過的特技,這裡寫這篇文章記錄一下。
1.case class樣例類
case class樣例類初始化的時候不需要用new來初始化,而且此樣例類自帶了tostring,hascode,equals等方法,這個樣例類最多的用途是用來做模式匹配case class person(name:string)
val v1 = person("xiong")
v1 match
//匹配出name為xiong
2.花括號何時代替小括號
這個問題也困擾我很久了,之前一直不大明白,查了一下說是括號裡面其實只有乙個引數的話這個小括號就可以用花括號來代替,目前看來主要是用來那些函式呼叫的時候,比如這樣:scan(t1, cf, startrow, stoprow)
3.implicit隱式轉換
這個也比較奇怪,只要在這個類或者**塊範圍內定義了implicit方法,如果呼叫函式的時候發現引數型別不匹配的話,scala會自動的去呼叫這個implicit方法,不管implicit方法是叫啥名,scala只關心的是這個implicit的輸入和輸出型別是否與他所需要的型別轉換所匹配4.yeild關鍵字implicit def str2int(s:string):int = integer.parseint(s) //隱式str轉int
def add(a:int, b:int) = a+b
add("1",2) //先把"1"隱式轉換為1,再加起來
yeild一般用在for迴圈中,記住yeild返回的也是乙個陣列5.模式守衛
模式守衛一般用在case匹配中,其實相當於case匹配中再加入乙個if語句而已10 match
scala 學習的一些記錄
最近由於要看懂housemd的具體實現,被迫需要學習scala 記錄一下吧.1 hello world 2 scala與idea的整合 這個文件裡有乙個幾個小問題 1 在project structure libraires裡把對應的兩個包 move to global libraries.我試了下...
scala學習之scala中一些集合的常用函式
集合的基本屬性與常用操作 衍生集合的操作 集合計算的初級函式 集合計算高階函式object testreduce 1234 1234 1234 flod方法 object testfold startabcd startabcd 通過scala集合實現簡單的wordcount object test...
scala的一些知識點(一)
函式 val sum x int,y int 方法 def sum x int,y int 定義方法 def m1 x int,f int int f x def m2 f int,int int f 2,3 def m3 f int,int int,x int,y int f x,y 定義函式 v...