- Android Development with Kotlin
- Marcin Moskala Igor Wojda
- 273字
- 2021-07-02 18:48:34
Elvis operator
The elvis operator is represented by a question mark followed by a colon (?:) and has a syntax such as the following:
first operand ?: second operand
The elvis operator works as follows: if first operand is not null, then this operand will be returned, otherwise second operand will be returned. The elvis operator allows us to write very concise code.
We can apply the elvis operator to our example to retrieve the variable locked, which will always be non-nullable:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val locked: Boolean = savedInstanceState?.getBoolean("locked") ?: false }
In the preceding example, the elvis operator will return a value of the savedInstanceState?.getBoolean("locked") expression if savedInstanceState is not null, otherwise it will return false. This way we can make sure that the locked variable will always have a non-nullable value. Thanks to the elvis operator, we can define a default value. Also, note that the right-hand side expression is evaluated only if the left-hand side is null. It is then providing a default value that will be used when the expression is nullable. Getting back to our quiz example from the previous section, we can easily modify the code to always return a non-nullable value:
val correct = quiz.currentQuestion?.answer?.correct ?: false
As the result, the expression will return the value returned by the correct property or false if any object in the safe call chain is null. This means that the value will always be returned, so non-nullable Boolean type is inferred.

Source: http://dobsondev.com/2014/06/06/the-elvis-operator/
- Git Version Control Cookbook
- JavaScript高效圖形編程
- Ext JS Data-driven Application Design
- 樂高機器人設計技巧:EV3結構設計與編程指導
- JavaScript前端開發與實例教程(微課視頻版)
- Python機器學習實戰
- 深入淺出RxJS
- 快速念咒:MySQL入門指南與進階實戰
- 從0到1:Python數據分析
- SQL Server從入門到精通(第3版)
- Java網絡編程核心技術詳解(視頻微課版)
- App Inventor創意趣味編程進階
- 微課學人工智能Python編程
- Wearable:Tech Projects with the Raspberry Pi Zero
- Learning TypeScript