Swift 本身支持延迟变量 (lazy variables),但它们的使用相当受限。
let lazyInt = Lazy(1)
print(lazyInt.wasMade) // false
print(lazyInt.value) // 1
print(lazyInt.wasMade) // true
支持算术运算
let lazyInt = Lazy<Int>{ 1 + 2 * 5 } * 4 + 10
print(lazyInt.wasMade) // false
print(lazyInt.value) // 54
print(lazyInt.wasMade) // true
简洁的语法
let lazyInt = Lazy(1)
print(*lazyInt) // 1
let providerInt = Provider(1)
print(lazyInt.value) // 1
支持算术运算
let providerInt = Provider<Int>{ 1 + 2 * 5 } * 4 + 10
print(providerInt.value) // 54
简洁的语法
let providerInt = Provider(1)
print(*providerInt) // 1
var counter: Int = 0
let lazyInt = Lazy<Int> {
counter += 1
return counter
}
print(lazyInt.value) // 1
print(lazyInt.value) // 1
print(lazyInt.value) // 1
lazyInt.clear() // no provider
print(lazyInt.value) // 2
print(lazyInt.value) // 2
print(lazyInt.value) // 2
var counter: Int = 0
let providerInt = Provider<Int> {
counter += 1
return counter
}
print(providerInt.value) // 1
print(providerInt.value) // 2
print(providerInt.value) // 3
添加带参数的 Provider
let provider = Provider2<String, Int, Double> { "\($0) + \($1) = \($0 + $1)" }
print(provider.value(10, 20.0)) // "10 + 20.0 = 30.0"
支持 1, 2, 3, 4, 5 个参数。
要使用 CocoaPods 安装 SwiftLazy,请将以下代码添加到你的 Podfile 中: pod 'SwiftLazy'
github "ivlevAstef/SwiftLazy"
iOS 11.0+, macOS 10.13+, tvOS 11.0+, watchOS 4.0+, Linux; ARC
请提交一个 GitHub issue。
您可以随时通过电子邮件提出问题:ivlev.stef@gmail.com。