【发布时间】:2021-12-14 16:27:49
【问题描述】:
任何人都可以解释通用类“Active”下面的具体作用是什么 - 绑定变量?下面也提到了 3 个例子,但我真的不清楚它是如何工作的
class Active<T> {
var bind :(T) -> () = { _ in }
var value :T {
didSet {
bind(value)
}
}
init(_ v :T) {
value = v
}
}
例子:
- var user = Active("")
- var count = Active(64)
- var status = Active(true)
具体示例如下链接所示
https://levelup.gitconnected.com/2-ways-to-execute-mvvm-ios-5c47d60ebcd0
【问题讨论】:
-
您是否理解
bind是一个闭包? -
如果您要重新编写该代码,您必须创建 3 个类。一个所有提及
T的地方都替换为String。另一个所有提及T的地方都替换为Int。另一个所有提及都替换为Bool。 Swift 具有泛型,因此可以创建 1 个类而不是 3 个。<T>仅表示任何类型。<>中的任何内容都类似于占位符类型。如果您使用<T:Equatable>,那么它只是意味着 any 也恰好符合Equatable协议。有关更多信息,请参阅docs -
旁注:
didSet不应在init上调用,因此实际上binding可能无法按预期工作。 -
这个类是一个包装器,只要值改变就简单地调用
bind函数。 -
@Larme,@Honey - 绑定闭包实际上是做什么的?关闭时没有什么可以执行的?