我在Swift中理解我的具体请求时遇到了一些麻烦。 有一个名为Origin的类和多个子类。 如何更新我在Origin类中编写的块方法?
class Origin: NSObject {
func mod(_ block: (() throws -> Void)) {
try! block()
}
}
我需要使用所有Origin子类中的mod,我需要具有这种使用效果:
var originSubclassObject = OriginSubclass()
originSubclassObject.mod {
.age = 12 //age is OriginSubclass property
.name = "Bob" //name is OriginSubclass property
}
所以,你看,我需要提取OriginSubclass属性以便在mod-block中使用。我需要在使用效果代码中创建完全相似的用法(从“。”中提取mod-caller属性)。 谢谢大家的帮助!
答案 0 :(得分:0)
您可以考虑使用默认实现的协议,例如:
$set: { statusArray: newStatusArray}
然后:
protocol Modifiable { }
extension Modifiable {
func mod(_ block: ((Self) throws -> Void)) {
try! block(self)
}
}
class Origin: Modifiable { }
class OriginSubclass: Origin {
var name: String?
var age: Int?
}
或
let originSubclassObject = OriginSubclass()
originSubclassObject.mod { object in
object.age = 12
object.name = "Bob"
}
或者,如果该基类仅适用于let originSubclassObject = OriginSubclass()
originSubclassObject.mod {
$0.age = 12
$0.name = "Bob"
}
方法,则可能完全失去它:
mod
并且
protocol Modifiable { }
extension Modifiable {
func mod(_ block: ((Self) throws -> Void)) {
try! block(self)
}
}
class MyObject: Modifiable {
var name: String?
var age: Int?
}
或者
let myObject = MyObject()
myObject.mod { object in
object.age = 12
object.name = "Bob"
}