【发布时间】:2022-01-30 17:59:41
【问题描述】:
我正在跟随 Paul Hudson 的 Swift 100 天学习 Swift。在他的一个扩展课程中,我发现了一个概念,即更高级的开发人员可以编写一个 Sequence 扩展来服务数组、集合和字典:
https://www.hackingwithswift.com/quick-start/understanding-swift/when-are-protocol-extensions-useful-in-swift
我试了一下,但是:
- 我不知道如何创建一个可以改变其类型的变量(想知道这是否可能)
- 我不知道如何创建一个也可以为字典提供服务的序列,因为它们的
allSatisfy语法有点不同
你能好心帮我一下吗? :)
代码:
extension Sequence {
var isAllEven:Bool {
numbers.allSatisfy { $0.isMultiple(of:2)}
}
}
let numbers = Set([4, 8, 15, 16])
print(numbers.isAllEven)
我可以将数字更改为 Array 和 Set,但是一旦我理解了 Paul 所说的内容,就有可能创建一个扩展程序,可以在一段代码中为所有 3 个服务提供服务,而无需更改变量内容。
【问题讨论】:
-
字典是一系列键值对。你想检查所有的键是偶数,还是所有的值都是偶数,或两者兼而有之?
-
只有值,@Sweeper
-
@Swantewit 请注意,您将 allSatisfy 方法应用于 numbers 对象而不是序列本身
-
你还没有真正理解保罗所说的。他专门谈论
allSatisfy和其他类似泛化的成员。