bbaldino
03/11/2019, 10:16 PMclass Foo {
var baz: Int
}
such that callers accessed baz
by doing Foo.bar.baz
?streetsofboston
03/11/2019, 10:21 PMclass Foo {
var baz: Int
}
val Foo.bar get() = this
Now, you can call val value: Int = myFoo.bar.baz
bbaldino
03/11/2019, 10:23 PMbaz
only accessible through bar
?bbaldino
03/11/2019, 10:23 PMbbaldino
03/11/2019, 10:24 PMstreetsofboston
03/11/2019, 10:25 PMbbaldino
03/11/2019, 10:29 PMstreetsofboston
03/11/2019, 10:29 PMinterface IFoo {
var baz : Int
}
class Foo {
private var baz: Int = 8
val bar : IFoo = object : IFoo {
override var baz: Int
get() = this@Foo.baz
set(value) { this@Foo.baz = value }
}
}
fun main() {
Foo().bar.baz
}
bbaldino
03/11/2019, 10:30 PMstreetsofboston
03/11/2019, 10:42 PMinterface InnerFoo {
val bar : Foo
}
class Foo private constructor() {
companion object {
operator fun invoke() : InnerFoo = object : InnerFoo {
override val bar = Foo()
}
}
private var hiddenProp: Int = 0
var baz : Int = 0
}
fun main() {
val foo = Foo()
foo.bar.baz
foo.bar.baz = 29
}