【发布时间】:2018-07-31 11:59:48
【问题描述】:
我用 Kotlin 写了一段时间,我习惯使用下一个模式:
variable.addSomething(object: TargetType() { ...code... })
或
var variable = object: TargetType() { ...code... }
(如果我没有遗漏什么)
是否有可能在 Swift 中以某种方式使用这种模式?它是怎么称呼的? :)
编辑: 我真正想做的 - 将预先配置的 RxSwift.SingleEvent 存储在对象内部的 let / var 中,并在以后多次重复使用。
在代码中,我想应该是这样的:
private var observer = SingleEvent<Response>(ok_callback, error_callback) {
override success(el: Element) {
ok_callback(el)
super.success(el)
}
override error(er: Error) {
self.onErrorRetry(er, callback)
}
}
如果在一些神奇的作品之后重试 - 只需调用我的回调并返回 :)
【问题讨论】:
-
这个“对象:闭包”被称为“匿名类”。
-
@user28434 14 年使用的语言发生了很大变化。实际上 Swift 4 与标记答案中使用的完全不同(尽管它在编译时抛出错误)
-
@Pawel 在 Java 中会这样称呼,但在 Kotlin 中则是"object expression"。
-
我认为 Swift 4 中没有等效的概念,即使有方法可以模拟它,如@user28434 链接的问题中所描述的那样。你最好的选择是使用一个简单的、旧的、无聊的结构/类来实现你感兴趣的协议/接口