32 lines
607 B
Kotlin
Vendored
32 lines
607 B
Kotlin
Vendored
var sayResult = ""
|
|
|
|
class NoiseMaker {
|
|
fun say(str: String) { sayResult += str }
|
|
}
|
|
|
|
fun noiseMaker(f: NoiseMaker.() -> Unit) {
|
|
val noiseMaker = NoiseMaker()
|
|
noiseMaker.f()
|
|
}
|
|
|
|
abstract class Pet {
|
|
fun <T> NoiseMaker.playWith(friend: T) {
|
|
say("Playing with " + friend)
|
|
}
|
|
|
|
abstract fun play(): Unit
|
|
}
|
|
|
|
class Doggy(): Pet() {
|
|
override fun play() = noiseMaker {
|
|
say("Time to play! ")
|
|
playWith("my owner!")
|
|
}
|
|
}
|
|
|
|
fun box(): String {
|
|
Doggy().play()
|
|
if (sayResult != "Time to play! Playing with my owner!") return "fail: $sayResult"
|
|
|
|
return "OK"
|
|
} |