RXSwift combineLatest 是如何使用的,看起来像什么,闭包中的匿名 Class 并处理附加参数
How Does RXSwift combineLatest Use, What Looks Like, An Anonymous Class In A Closure And Handle Additional Parameters
据我了解,Swift不支持匿名classes。
我正在使用 RXSwift 代码库并且有一段代码我无法完全理解正在发生的事情。
这是块:
sections = Observable.combineLatest(observable1,
observable2,
observable3)
{
(arg1: ,
arg2: [=11=].0,
arg3: [=11=].1,
arg4: )
}
.map { arg1, arg2, arg3, arg4 -> [Section] in
// Do Stuff
}
我遇到的问题是将 combineLatest 转换成这个的块,看起来像匿名的 class。
当我查看 combineLatest 的签名时,它显示:
public static func combineLatest<O1, O2, O3>(_ source1: O1, _ source2: O2, _ source3: O3, resultSelector: @escaping (O1.E, O2.E, O3.E) throws -> Self.E) -> RxSwift.Observable<Self.E> where O1 : ObservableType, O2 : ObservableType, O3 : ObservableType
所以当我阅读它时,@escaping 关闭通过 @escaping (O1.E, O2.E, O3.E)
接受 3 个参数
似乎正在创建一个新的匿名对象,它有 4 个参数而不是 3 个。
您能否解释一下如何创建一个看似匿名的 class(我不完全理解这是可能的)的新可观察对象,并且是如何使用 4 个参数而不是 3 个参数创建的?
闭包内的 (arg1: , arg2: [=12=].0, arg3: [=12=].1, arg4: )
部分创建了一个元组。元组是一组任意类型的多个值。元组的每个元素都可以有一个名称,但它们总是可以通过数字访问。在您的示例中,元组有 4 个元素,名称分别为 arg1、arg2、arg3 和 arg4。元组的元素可以是任何类型。
创建元组的语法是一个逗号分隔值列表,括号内有可选名称:
let a = (1, "hello", true)
let b = (first: 1, second: "hello", true)
要访问元组的值,您可以使用 .
后跟名称或索引:
print(a.0, a.1, a.2)
print(b.first, b.second, b.2)
let x = b.0
请注意,即使元素已命名,您也可以使用索引。
据我了解,Swift不支持匿名classes。
我正在使用 RXSwift 代码库并且有一段代码我无法完全理解正在发生的事情。
这是块:
sections = Observable.combineLatest(observable1,
observable2,
observable3)
{
(arg1: ,
arg2: [=11=].0,
arg3: [=11=].1,
arg4: )
}
.map { arg1, arg2, arg3, arg4 -> [Section] in
// Do Stuff
}
我遇到的问题是将 combineLatest 转换成这个的块,看起来像匿名的 class。
当我查看 combineLatest 的签名时,它显示:
public static func combineLatest<O1, O2, O3>(_ source1: O1, _ source2: O2, _ source3: O3, resultSelector: @escaping (O1.E, O2.E, O3.E) throws -> Self.E) -> RxSwift.Observable<Self.E> where O1 : ObservableType, O2 : ObservableType, O3 : ObservableType
所以当我阅读它时,@escaping 关闭通过 @escaping (O1.E, O2.E, O3.E)
似乎正在创建一个新的匿名对象,它有 4 个参数而不是 3 个。
您能否解释一下如何创建一个看似匿名的 class(我不完全理解这是可能的)的新可观察对象,并且是如何使用 4 个参数而不是 3 个参数创建的?
闭包内的 (arg1: , arg2: [=12=].0, arg3: [=12=].1, arg4: )
部分创建了一个元组。元组是一组任意类型的多个值。元组的每个元素都可以有一个名称,但它们总是可以通过数字访问。在您的示例中,元组有 4 个元素,名称分别为 arg1、arg2、arg3 和 arg4。元组的元素可以是任何类型。
创建元组的语法是一个逗号分隔值列表,括号内有可选名称:
let a = (1, "hello", true)
let b = (first: 1, second: "hello", true)
要访问元组的值,您可以使用 .
后跟名称或索引:
print(a.0, a.1, a.2)
print(b.first, b.second, b.2)
let x = b.0
请注意,即使元素已命名,您也可以使用索引。