mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-08 15:53:19 +00:00
44 lines
755 B
Kotlin
Vendored
44 lines
755 B
Kotlin
Vendored
// FILE: 1.kt
|
|
|
|
class My
|
|
|
|
inline fun <T, R> T.perform(job: (T)-> R) : R {
|
|
return job(this)
|
|
}
|
|
|
|
|
|
inline fun My.someWork(job: (String) -> Any): Unit {
|
|
this.perform {
|
|
job("OK")
|
|
}
|
|
}
|
|
|
|
inline fun My.doWork (closure : (param : String) -> Unit) : Unit {
|
|
this.someWork(closure)
|
|
}
|
|
|
|
inline fun My.doPerform (closure : (param : My) -> Int) : Int {
|
|
return perform(closure)
|
|
}
|
|
|
|
// FILE: 2.kt
|
|
|
|
fun test1(): String {
|
|
val inlineX = My()
|
|
var d = "";
|
|
inlineX.doWork({ z: String -> d = z; z})
|
|
return d
|
|
}
|
|
|
|
fun test2(): Int {
|
|
val inlineX = My()
|
|
return inlineX.perform({ z: My -> 11})
|
|
}
|
|
|
|
fun box(): String {
|
|
if (test1() != "OK") return "test1: ${test1()}"
|
|
if (test2() != 11) return "test1: ${test2()}"
|
|
|
|
return "OK"
|
|
}
|