kotlin Lambda + 扩展函数

var method: String.(String, String) -> Unit = {str1, str2 -> print("$this $str1 $str2")}
method.invoke("1", "2", "3")
method("1", "2", "3")
"1".method("2", "3")

三种的调用方式是同一个意思

var method1: Int.(String) -> String = { if(this == 1) "男" else if(this == 0) "女" else it}
1.method1("未知")
0.method1("未知")
method1(1, "未知")
22.method1("未知")
fun  T.runOk(c: T.() -> Boolean) {
        c()
    }
"123".runOk {
     print("this: $this")
     true
}
class Layout {
        fun button(b: () -> Unit) {

        }

        fun text(t: () -> Unit) {

        }
    }

    fun layout(v: Layout.() -> Unit) {

    }

    fun main() {
        layout {
            button {

            }

            text {

            }
        }
    }

你可能感兴趣的:(kotlin Lambda + 扩展函数)