- Functional Kotlin
- Mario Arias Rivu Chakraborty
- 219字
- 2021-06-24 19:15:22
Objects
We already covered object expressions, but there is more on objects. Objects are natural singletons (by natural, I mean to come as language features and not as behavior pattern implementations, as in other languages). A singleton is a type that has just one and only one instance and every object in Kotlin is a singleton. That opens a lot of interesting patterns (and also some bad practices). Objects as singletons are useful for coordinating actions across the system, but can also be dangerous if they are used to keep global state.
Object expressions don't need to extend any type:
fun main(args: Array<String>) {
val expression = object {
val property = ""
fun method(): Int {
println("from an object expressions")
return 42
}
}
val i = "${expression.method()} ${expression.property}"
println(i)
}
In this case, the expression value is an object that doesn't have any specific type. We can access its properties and functions.
There is one restriction—object expressions without type can be used only locally, inside a method, or privately, inside a class:
class Outer {
val internal = object {
val property = ""
}
}
fun main(args: Array<String>) {
val outer = Outer()
println(outer.internal.property) // Compilation error: Unresolved reference: property
}
In this case, the property value can't be accessed.
- 微服務(wù)設(shè)計(第2版)
- Java范例大全
- HoloLens Beginner's Guide
- Practical Game Design
- Learning Python Design Patterns(Second Edition)
- Easy Web Development with WaveMaker
- Python:Master the Art of Design Patterns
- Node.js全程實例
- Windows Phone 7.5:Building Location-aware Applications
- 利用Python進行數(shù)據(jù)分析
- 愛上micro:bit
- Learning AngularJS for .NET Developers
- Oracle 12c從入門到精通(視頻教學(xué)超值版)
- Python物理建模初學(xué)者指南(第2版)
- 網(wǎng)絡(luò)綜合布線與組網(wǎng)實戰(zhàn)指南