脫魯實錄之如何30天把到凱特琳(Kotlin) - Day8
來到和 Kotlin 相處的第8天了
今天來講講判斷式 if 和 when
if 字面上的翻譯就是 "如果..."
else if 可以翻成是 "要不然..."
else 就翻成 "再不然..."
所以換成程式邏輯的話會是
if(條件一){
//如果條件一成立就執行區塊,反之繼續判斷條件二
}else if(條件二){
//如果條件二成立就執行區塊,反之繼續判斷條件三
//中間可以有好多個else if
}else if(條件三){
//同上
}else{
//如果以上的條件都不符合,就執行這個區塊
}
下面給個範例:
var score: Int = 85
var grade: String = ""
if(score<=100 && score>80){
grade = "A"
}else if(score<=80 && score>=60){
grade = "B"
}else{
grade = "C"
}
println("Grade: $grade")
//所以印出的會是 Grade: A
有學過 Java 的同學一定覺得這就跟 Java 沒有什麼兩樣
是的!!上述的用法和範例都跟 Java 相同
但是!!
Kotlin 有著和 Java 不同的地方
那就是在 Kotlin 中的 if 是 "表達式" 而 Java 卻是 "語句式"
什麼是 "表達式" ??
表達式是可以有回傳值的,反之語句式是沒有回傳值的
剛剛上面的範例只印出分數範圍落在哪,現在可以做個延伸應用,仔細看 grade 的部分
var score: Int = 85
var grade: String = if(score<=100 && score>80){
"A"
}else if(score<=80 && score>=60){
"B"
}else{
"C"
}
println("Grade: $grade")
//印出 Grade: A
甚至可以拿掉變數型態,變成:
var score: Int = 85
var grade = if(score<=100 && score>80){
"A"
}else if(score<=80 && score>=60){
"B"
}else{
"C"
}
println("Grade: $grade")
//印出 Grade: A
再來 Kotlin 還可以在有返回值的 if 區塊中執行其他程式,只要你在該區塊中的最後一行返回值就可以
不過!!這點很重要!!如果要在該區塊執行其他程式的話,必須先給定返回值的變數型態
可以看看下面這個例子
var score: Int = 85
var grade: String = if(score<=100 && score>80){
println("score<=100 && score>80")
"A"
}else if(score<=80 && score>=60){
println("score<=80 && score>=60")
"B"
}else{
println("score<60")
"C"
}
println("Grade: $grade")
//印出
//score<=100 && score>80
//Grade: A
when 的用法和 if 很類似,一樣也是表達式,可以返回值
學會 if 再來學 when 就可以得心應手囉
when 的用法如下:
when{
條件一 -> {
//如果條件一成立就執行區塊,反之繼續判斷條件二
}
條件二 -> {
//如果條件二成立就執行區塊,反之繼續判斷條件三,以此類推
}
else -> {
//如果以上的條件都不符合,就執行這個區塊
}
}
下面給個範例:
var score: Int = 85
var grade = ""
when{
score<=100 && score>80 -> grade = "A"
score<=80 && score>=60 -> grade = "B"
else -> grade = "C"
}
剛剛說到 when 也是"表達式"
所以上面的範例也可以寫成:
var score: Int = 85
var grade: String = when{
score<=100 && score>80 -> "A"
score<=80 && score>=60 -> "B"
else -> "C"
}
當然也可以去掉變數型態
var score: Int = 85
var grade = when{
score<=100 && score>80 -> "A"
score<=80 && score>=60 -> "B"
else -> "C"
}