[转载] scala
參考鏈接: 在Java的數(shù)字中使用下劃線
1 scala 底層是有一種隱式轉(zhuǎn)換機(jī)制,比如對(duì)String類型,底層會(huì)轉(zhuǎn)化Scala的StringOps類型?
2 scala 的通用的化簡(jiǎn)規(guī)則:調(diào)方法時(shí)候,方法的參數(shù)列表只有一個(gè),則方法的()可以省略?
??
數(shù)字:?
1 scala中沒有基本變量,都是對(duì)象和方法?
2 scala的int 表面是java的int 但是底層通過隱式轉(zhuǎn)換,轉(zhuǎn)成了scala的RichInt類型?
?to方法。用生成一個(gè)區(qū)間,一般用于for循環(huán)生成的范圍?
RichDouble? RichFloat?
3 scala的操作符優(yōu)先同java?
4 scala 會(huì)以方法的調(diào)用順序來運(yùn)算?
5 前置操作符 加上空格? 分別是+(正數(shù))? -(負(fù)數(shù))? ?!(布爾取反)? ~(二進(jìn)制)?
6 scala在使用前置操作符可以通過unary_(+-)?
??
1 scala 的if else 的用途和java一樣?
2 scala 的通用化簡(jiǎn)規(guī)則: 如果方法體{}中只有一行代碼,則方法體{}可以省略?
3 scala 的if? else 和java的不同的地方在于 :if else 是有返回值 的 ,可以接? ,返回值的不同 ,返回值的類型是Any?
4 scala的通用規(guī)則:scala會(huì)將方法體{}最后的一行代碼當(dāng)做返回值,不要return?
5 scala的Unit類型? java的void ,空類型? ? Any ---java 的Object?
6 println 的返回值類型是Unit?
7 scala的while用法一樣java?
8 scala通過下標(biāo)操作集合類型時(shí) ,下標(biāo)數(shù)字同java,使用(index),不同java? [index]?
??
for 循環(huán)?
?for(i<-1 to 9 ; j<-1 to i ; val sep =if(i==j) "\t\n" else "\t") print(j+"*"+i+"=" +i*j? +sep)?
1 scala 的集合是大的概論 ,包括: Array List Set? Map Tuple Range?
2 for yield 的作用,遍歷一個(gè)集合,返回一個(gè)新的集合,指的是:遍歷的是Array,返回時(shí)Array?
3 聲明 map(key -> value)?
??
異常?
1 scala在catch,捕獲異常用的是case來匹配?
2 scala的match機(jī)制類比于java的switch case?
??
break 和count?
1 scala使用break要導(dǎo)包 import util.control.Breaks. ,或是breakcable 包裹?
2 breakcable在for循環(huán)外,是break的效果,在for循環(huán)內(nèi),是 continue效果?
??
函數(shù)?
1 scala通過def 關(guān)鍵字當(dāng)以函數(shù)? def 函數(shù)名(參數(shù)列表):返回值類型={ 方法體}?
??
??
匿名函數(shù)?
1 沒有函數(shù)名? 連接符號(hào) =>? ?可以當(dāng)做參數(shù)賦值? 或傳遞?
2 把匿名函數(shù)當(dāng)參數(shù)進(jìn)行傳遞,高階函數(shù)?
3 高階函數(shù)允許將函數(shù)當(dāng)參數(shù)進(jìn)行傳遞?
4 匿名函數(shù)通用化簡(jiǎn)規(guī)則:如果參數(shù)的類型可以推出,可以不寫?
5? ?如果匿名函數(shù)的參數(shù)只有一個(gè),則參數(shù)的只有一個(gè),則參數(shù)的()可以不寫?
6 可以通過_(占位符)?
7 占位符指的是scala中的下劃線_ ,可以用它當(dāng)作一個(gè)或多個(gè)參數(shù)來使用 使用_占位符的前提要求:每個(gè)參數(shù)在函數(shù)僅出現(xiàn)一次。?
??
遞歸函數(shù)?
1 必須申明的數(shù)值的返回類型?
2 寫遞歸的技巧:a.找出遞歸的結(jié)束條件? b.找出函數(shù)關(guān)系??
3 在scala,結(jié)束條件的返回值必須是return?
??
??
1? ?lazy數(shù)值聲明之后,并不是馬上賦值的,調(diào)用時(shí)才賦值?
2? ?lazy 只能常量val?
3 scala底層支持顆?;?。允許接受多個(gè)參數(shù)轉(zhuǎn)化?
4 前面是普通參數(shù),后面是匿名函數(shù),叫自建立控制結(jié)構(gòu)?
??
集合?
1 Array List? Set Map Tuple? Range Iterator?
2? immutable :定長(zhǎng)數(shù)組Array? mutable :變長(zhǎng)ArrayBuffer?
??
以下是Array和List通用而且重要的方法 1.take 2.takeRight 3.drop 4.dropRight 5.head 6.last 7.mkString 8.intersect(交集) 9.union(并集) 10.diff(差集) 11.exists 12.count 13.filter(過濾) 14.sortBy(排序) 15.map(映射方法) 16.max 17.min 18.sum 19.reduce 20.reverse(反轉(zhuǎn)) 21.dinstinct(去重) 22.mapValue(專用于映射Map類型的value) Array和List沒有此方法?
以上再重點(diǎn)掌握:1.filter? 2.sortBy 3.map 4.reduce 5.mapValues?
補(bǔ)充:掌握類型轉(zhuǎn)換的技巧。比如一個(gè)方法,distinct,compactBuff類型, 但是List有,所以可以通過類型轉(zhuǎn)化來實(shí)現(xiàn)
總結(jié)
以上是生活随笔為你收集整理的[转载] scala的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 字体颜色选择,Andro
- 下一篇: python条件判断true_Pytho