我創建了以下擴展:
import Foundation
extension Collection {
/// Returns `nil` if empty
var nonEmptyValue: Self? {
isEmpty ? nil : self
}
}
現在我想讓它成為一個屬性包裝器,這樣我就可以像這樣使用它:
final class MyClass {
@NonEmpty
var string: String? = "test"
}
這個想法是,每當一個空字串被分配給屬性時,它就會被替換為nil.
甚至有可能創建這樣一個屬性包裝器(因為String?和String是不同型別的),我將如何去做?
uj5u.com熱心網友回復:
我正在使用您的擴展程式:
import Foundation
@propertyWrapper
struct NonEmpty<T: Collection> {
var wrappedValue: T? {
didSet {
self.wrappedValue = wrappedValue?.nonEmptyValue
}
}
init(wrappedValue: T?) {
self.wrappedValue = wrappedValue?.nonEmptyValue
}
}
extension Collection {
/// Returns `nil` if empty
var nonEmptyValue: Self? {
isEmpty ? nil : self
}
}
結果如下圖所示:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/427946.html
上一篇:需要條形圖適合Section()
