kotlin 有3中結構化的跳轉語句:
所有這些表示式都可以被用來組成更大的表示式
val s = person.name ?: return
kotlin中的任何表示式都可以被 標記成乙個標籤label
,標籤由乙個識別符號和緊跟的@
組成,例如:abc@
,foobar@
是合法的標籤命名。 想要把乙個表示式定義成標籤,只要在它簽名寫乙個標籤即可。
loop@ for (i in
1..100)
現在我們可以針對這個標籤來使用break
和continue
:
loop@ for (i in
1..100)
}
乙個帶標籤的break
語句,會把執行點跳轉到標籤標記的位置之後。 乙個帶標籤continue
語句,會還執行迴圈的下一輪遍歷。
kotlin支援的函式語法可以讓本地函式,物件表示式和函式可以內嵌在一起。帶有標籤的return
語句可以讓我們從乙個外層的函式中返回。 最終要的用例就是從乙個lambda表示式中返回。例如:
fun foo()
}
這個return
語句會從最近的函式中返回,也就是會從foo()
函式中返回。(注意這種非區域性的返回只是在lambda表示式中支援傳遞給內聯函式)。如果我們需要從乙個lambda表示式中返回,我們只能先標記它,然後使用帶標籤的返回語句。
fun foo()
}
現在它只是從lambda表示式中返回。還有時候,使用隱式標籤會更加方便:隱式標籤的名字和呼叫這個lambda表示式的函式名是一樣的。
fun foo()
}
或者還可以把lambda表示式替換成給乙個匿名函式。乙個返回語句在乙個匿名函式中會從匿名函式中返回。
fun foo() )
}
如果需要返回值,解析器需要乙個引數,例如:
return
@a1
意味著在@a這個位置返回1, 而不是返回乙個標籤表示式(@a 1)
Kotlin語法(五) 返回和跳轉
跟其他語言類似,kotlin 有三種跳出結構方式 return 預設情況下,從最近的乙個封閉的方法或者 方法表示式跳出.break.終止最近的封閉迴圈 continue.直接進入迴圈體的下次迴圈 在kotlin中任何表示式都可以用label 標籤 來標記。label的格式是被 識別符號標記,例如 a...
Kotlin學習之委託機制
委託模式可以很好的替代實現繼承,kotlin本身支援需要零樣板 乙個類derived 可以繼承base並委託它所有的public 方法到乙個指定的類 inte ce base class baseimpl val x int base class derived b base base by b f...
Kotlin學習之資料類
kotlin學習 經常要建立一些只儲存資料的類。在這些類中,一些標準函式往往是從資料機械推導而來的。在kotlin中,這叫做資料類並標記為data。宣告乙個資料類的語法格式如下 data class 類名 繼承類和實現介面 主建構函式的引數列表必須使用val var宣告為類屬性,而且要求至少有乙個,...