好程式設計師大資料學習路線分享Scala分支和迴圈
好程式設計師大資料學習路線分享Scala分支和迴圈
3.3. 條件表示式
表示式:一個具有執行結果的程式碼塊。結果是具體的值或者()
表示式的思考方式:以表示式為中心的程式設計思想
1.表示式和語句的區別:表示式有返回值,語句被執行。表示式一般是一個語句塊,執行後,返回一個值
2.不使用return語句,最後一個表示式即返回值
if/else表示式有值,這個值就是跟在if或者else之後的表示式的值
object ConditionDemo {
def main(args: Array[String]){
var x = 1
//
將
if/else
表示式值賦給變數
y
val y =
if (x > 0 ) 1
else -1
println(y)
//
支援混合型表示式
//
返回型別是
Any
val z =
if(x>0) "success"
else -1
println(z)
//
如果缺失
else
,相當於
if(x>2) 1 else
()
//
返回型別是
AnyVal
//
如果進行型別判斷和轉換,可以使用:
//var b = if(m.isInstanceOf[Int]) m.asInstanceOf[Int] else 0
val m =
if(x>2) 1
println(m)
//
在
scala
中,每個表示式都有值,
scala
中有個
unit
類,寫作(),相當於
Java
中的
void
val n =
if(x>2) 1
else ()
println(n)
//if
巢狀
val k=
if(x<0) 0
else
if (x>=1) 1
else -1
println(k)
}
執行結果:
Scala的的條件表示式比較簡潔,例如:
注意:1,每個表示式都有一個型別
2,條件表示式有值
3,混合型表示式,結果是Any或者AnyVal
4,scala沒有switch語句
3.4. 塊表示式
object BlockExpressionDemo {
def main(args: Array[String]){
var x = 0
//
在
scala
中,
{}
中可以包含一系列表示式,塊中最後一個表示式的值就是塊的值
val res = {
if (x < 0) {
-1
}
else
if (x >= 1) {
1
}
else {
"error"
}
}
println(res)
val x0 = 1
val y0 = 1
val x1 = 2
val y1 = 2
val distance = {
val dx = x1 - x0
val dy = y1 - y0
Math.sqrt(dx*dx+dy*dy)
}
println(distance)
//
塊語句,最後一句是賦值語句,值是
unit
型別的
var res2 = {
val dx = x1 - x0
val dy = y1 - y0
val res = Math.sqrt(dx*dx+dy*dy)
}
println(res2)
}
}
執行結果:
注意:
1,塊表示式的值是最後一個表示式的值
2,賦值語句的值是unit型別的,
3.5. 迴圈
在scala中有for迴圈和while迴圈,用for迴圈比較多
for迴圈語法結構: for (i <- 表示式/陣列/集合)
while (條件語句){表示式}
do{ 表示式}while()
object ForDemo
def main(args: Array[String]){
//
每次迴圈將區間的一個值賦給
i
for( i <- 1 to 10)
println(i)
//for i <-
陣列
val arr = Array("a", "b", "c")
for( i <- arr)
println(i)
val s = "hello"
for(i <- 0 until s.length){
println(s(i))
}
//
或者
// for(c <- s)println(c)
//
或者
// for(i <- 0 until s.length){
// println(s.charAt(i))
//
使用了隱式轉換,把字串變成一個
ArrayCharSequence
// }
//
高階
for
迴圈
for(i <- 1 to 3 ; j<- 1 to 3
if i != j)
print((10*i + j) + "")
println()
//for
推導式,如果
for
迴圈的迴圈體以
yeild
開始,則該迴圈會構建出一個集合或者陣列,每次迭代生成其中的一個值。
val v=
for ( i <- 1 to 10 )
yield i*10
println (v)
//
也可以藉助函式由初始陣列生成一個新的陣列
val arr1 = Array(1,2,3,4,5,6,7,8,9)
val arr2 = arr.map(_*10)
val arr3 = arr.filter(_%2==0)
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2655749/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師大資料學習路線分享spark之Scala程式設計師大資料Spark
- 好程式設計師大資料學習路線分享Scala系列之物件程式設計師大資料物件
- 好程式設計師大資料學習路線分享scala單列和伴生物件程式設計師大資料物件
- 好程式設計師大資料學習路線分享Scala系列之抽象類程式設計師大資料抽象
- 好程式設計師大資料學習路線分享Scala系列之陣列程式設計師大資料陣列
- 好程式設計師大資料學習路線分享Scala系列之泛型程式設計師大資料泛型
- 好程式設計師大資料學習路線分享Scala系列之對映Map程式設計師大資料
- 好程式設計師大資料學習路線分享Scala系列之基礎篇程式設計師大資料
- 好程式設計師大資料學習路線分享MAPREDUCE程式設計師大資料
- 好程式設計師大資料學習路線分享SparkSQl程式設計師大資料SparkSQL
- 好程式設計師大資料學習路線分享Scala系列之集合操作函式程式設計師大資料函式
- 好程式設計師大資料學習路線分享Hbase指令學習程式設計師大資料
- 好程式設計師大資料學習路線分享大資料之字串程式設計師大資料字串
- 好程式設計師大資料學習路線分享TCP和UDP學習筆記程式設計師大資料TCPUDP筆記
- 好程式設計師大資料學習路線Hadoop學習乾貨分享程式設計師大資料Hadoop
- 好程式設計師大資料學習路線分享HDFS學習總結程式設計師大資料
- 好程式設計師大資料學習路線分享hdfs學習乾貨程式設計師大資料
- 好程式設計師大資料學習路線分享Actor學習筆記程式設計師大資料筆記
- 好程式設計師大資料學習路線分享Map學習筆記程式設計師大資料筆記
- 好程式設計師大資料學習路線分享HDFS讀流程程式設計師大資料
- 好程式設計師大資料學習路線分享AWK詳解程式設計師大資料
- 好程式設計師大資料學習路線分享UDF函式程式設計師大資料函式
- 好程式設計師大資料學習路線分享Lambda表示式程式設計師大資料
- 好程式設計師大資料學習路線分享hive分割槽和分桶程式設計師大資料Hive
- 好程式設計師大資料學習路線分享大資料之執行緒程式設計師大資料執行緒
- 好程式設計師大資料學習路線分享高階函式程式設計師大資料函式
- 好程式設計師大資料學習路線分享Hadoop機架感知程式設計師大資料Hadoop
- 好程式設計師Python學習路線分享Linux和資料庫部分程式設計師PythonLinux資料庫
- 好程式設計師大資料學習路線分享大資料之基礎語法程式設計師大資料
- 好程式設計師大資料學習路線分享MapReduce全過程解析程式設計師大資料
- 好程式設計師大資料學習路線分享hive的執行方式程式設計師大資料Hive
- 好程式設計師大資料學習路線分享什麼是Hash表程式設計師大資料
- 好程式設計師大資料學習路線分享MapReduce全流程總結程式設計師大資料
- 好程式設計師大資料學習路線之大資料自學路線二程式設計師大資料
- 好程式設計師大資料學習路線之大資料自學路線一程式設計師大資料
- 好程式設計師大資料學習路線分享執行緒學習筆記二程式設計師大資料執行緒筆記
- 好程式設計師大資料學習路線分享多執行緒學習筆記程式設計師大資料執行緒筆記
- 好程式設計師大資料學習路線Hbase總結程式設計師大資料