Scala小記(一)

1.只要函數不是遞歸的,我們就不需要寫返回值,但遞歸函數必須要寫返回值
2.for循環中 添加if守衛 加不加分號,意義不變
3.val x@y=1 ===> x:Int =1 y:Int =1 ,別問爲什麼,不知道
4.在使用val 定義數組的時候,如果沒有賦初值,則需要用
val a = new Array類型
如果要給數組賦初值,則不需要用new
val a = Array(“Hello”,“World”)
5.在4中所代表的數組應該是定長數組,使用變長數組時,應注意使用這兩種方法
val b = new ArrayBuffer[類型]
val b = ArrayBuffer類型 ========>括號內不需要定義數組長度
6.在使用數組時,可以用 trimStart 和 trimEnd 來移除元素

Array ArrayBuffer
定義數組 val a = new Array類型 val a = Array(“Hello”,“World”) val b=new ArrayBuffer[類型]val b = ArrayBuffer類型
增刪 不允許 b.insert(下標,在下標之前插入)b.insert(2,6,7,8,9,4,10)===>在下標前插入多個值b.remove(下標)b.remove(下標,要移除的位數)b.trimStart(長度)b.trimEnd(長度)b+=,b-=,b++=,b–=

7.在循環中,想讓數組中的元素每隔幾個一跳,可以用
for(i<- 0 until (a.length,n))===>n即爲要定義的跳數
8.在循環中,可以用下述方法來實現從尾端遍歷集合
for(i<- 0 until a.length,n).reverse
9.for推導式
val result = for(i<-a) yield 2*i
>標準寫法
10.數組轉換

兩種轉化方式
for推導式 val result = for(i<-a if i%2==0) yield 2*i
filter val result = a.filter(%2==0),map( 2* )甚至val result = a.filter(%2==0) map( 2 * )

11.另一種方式移除第一個負數之外的所有負數
var first = true
val indexes = for(i <-0 until a.length if first || a(i)>=0) yield { if (a(i)<0) first =false;i}
收集需要保留的下標
for (j <- 0 until indexes.length) a(j) = a(indexes(j))
將上述收集到的下標所在的元素移動去該去的位置
a.trimEnd(a.length-indexes.length)

12.變長參數
def sum(args:Int*)={
var result = 0
for(arg<- args) result +=arg
result
}
使用變長參數 ,可以在使用函數時,不限次數的傳遞參數,比起java中的構造函數方便不少
13.傳參傳遞值的序列
val s =sum(1 to 100 : _
)
在一個序列後追加 :_* 可以將前面的序列當成一個參數列表,遍歷傳遞
13.懶值
當val被聲明爲lazy時,它的初始化將被推遲,直到我們首次對它取值。
lazy val words = scala.io.Source.fromFile(URI).mkString

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章