接下來的知識點,枯燥無味,但仍是須要了解一下。。。函數
$..>if(x > 0) 1 else -1oop
$..>val s = if(x>0) 1 else -1scala
$..>if(x>0) s=1 else s=-1code
$..>if (x>0) "xx" else -1 //混合類型orm
//scala每一個語句都有值和類型對象
$..>if(x>0) 1 //若是x <= 0 ???等價於下方遞歸
$..>if(x>0) 1 else()//class Unit,寫作()圖片
//若是想要換行必須使用{},不然編譯器混淆編譯器
$..>if(x>0){1}it
else if(x == 0) 0 else -1
//若是粘貼代碼塊,無需擔憂,輸入
$..>:paste
$..>ctrl + k //scala會總體處理粘貼的代碼
//scala從不要求「;」,可是有些時候須要
$..>if(n >0){r=r*n;n-=1}
//多行語句,操做符結尾不會被認爲是結束
$..>... +
....
$..>if(..){ //使用{}
r = r*n n-=1
}
//塊的最後表達式是block的值
$..>val dis={val dx=..;...;sqrt(2)}
//如下語言不可靠,賦值語句的值是(),()不能賦值給x
//賦值語句的值就是()---Unit
$..>x=y=1
$..>while(n >0){
r = r * n
n -= 1
}
//scala沒有for(;;)語句,只有以下的形式
for(i <- 1 to 10) //to的範圍是閉區間[]
r = r * i
$..>for(i <- 0 until 10) //until是半開半閉開區間[)
r = r * i
$..>for(ch <- "abc") sun +=ch
//scala沒有break和continue語句
1.使用boolean變量
2.嵌套函數
$..>for(i<-1 to 3;j<- 1 to 3)print((10*i+i)+" ") //多個生成
//每一個生成器均可以帶條件
for(i<-1 to 3 ; j <- 1 to 3 if i !=j ) ...
12 13 21 23 31 32
//藉助變量
$..>for(i<-1 to 3;from = 4-i;j<-from to 3)...
//方法是在對象上,而函數不是 //函數定義指定名稱、參數和body //必須指定參數類型 def fac(n:Int)={ var r = 1 for(i<-1 to 10) r = r *1 r //最後的表達式是函數的返回值 }
def sum(args:Int*)={ var r = 0 for(arg<-args) r +=arg r } val s = sum(1,2,4,5,6) val s = sum(1 to 5) //error val s = sum(1 to 5:_*) //right
//scala沒有被檢異常,不用聲明拋出語句. //throw表達式的類型是Nothing,ifesle的類型不能是 //Nothing,所以就是不爲Nothing的分支類型 throw new IllegalArgumentException("xx") try{ ... } catch{ case _:MalformedURLException=>.//不適用異常對象 case ex:IOException =>ex.printStackTrace() }
try{ ... }finally{ in.close() }