你好,我想知道是否有相当于kotlin lambda的接收器,很快?
赞:
fun <T> T.apply(block: T.() -> Unit): T
T.()
等同于这种做法吗?
答案 0 :(得分:2)
我对Kotlin的带有接收器的 lambda 并不熟悉,但是据我阅读Kotlin文档
但是,在Swift中,不能在通用T
上定义扩展函数,其中T
是任何类型。因此,像您的T.apply
之类的东西必须是带有两个参数的全局函数。
使用Curry,Swift中的apply
会像这样:
func apply<T>(_ this: T, block: (T)->()->T) -> T {
return block(this)()
}
您可以像这样使用它:
var result = apply("Abc") {this in {this.uppercased()+this.lowercased()}}
print(result) //->ABCabc