Я не знаком с лямбдой Kotlin с приемником , но насколько я читаю документы Kotlin,
- В Swift нет прямого эквивалента
- Та же функциональность может быть достигнута добавлением параметра или карри
Но в Swift вы не можете определить функцию расширения для универсального T
, где T
- любой тип. Итак, что-то вроде вашего T.apply
должно быть глобальной функцией с двумя аргументами.
С каррингом apply
в Swift будет выглядеть примерно так:
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