我有一個enum案例,它是一個@Published var在一個ObservableObject類。我想做的是觀察下面定義的term var的變化,并更新一個annualRate publisher.
下面是@Published var
@Published var term: MortgageTerm = .30Year
MortgageTerm列舉的定義如下:
public enum MortgageType: Int, CaseIterable {
case tenYear = 10
case fifteenYear = 15
case TwentyYear = 20
case thirtyYear = 30 >。
}
我試圖讓這個annualRate得到定義,以便它觀察到上面的termvar的變化:
public lazy var annualRate: AnyPublisher<Double, Never> = {
var output: Double
$term
.map { switchCase -> Double in
switch switchCase {
case .tenYear:
輸出 = self.rate.tenYearFix
case .fifteenYear:
輸出 = self.rates.15YearFix
case .twentyYear:
輸出 = self.rates.20YearFix
case .thirtyYear:
輸出 = self.rate.30YearFix
}
return 輸出 * 0.01 >。
}
// FIXME:呼叫`eraseToAnyPublisher()`的結果未使用。
.eraseToAnyPublisher()
}()
我在.eraseToAnyPublisher()一行得到這個警告。我到底犯了什么錯,該如何解決呢?
這就是rates的來源:
private lazy var rates。AverageRate = {
let rateMock = AverageRate(30YearFha: 2.873,
thirtyYearVa: 2.858。
10YearFix: 2.068,
fifteenYearFix: 2.358。
30YearFix: 3.054,
五個單臂。2.898,
sevenOneArm: 2.972,
20年修復。2.756)
return rateMock
}()
uj5u.com熱心網友回復:
現在,你的annualRate { }里面沒有一個return陳述句。你有兩條陳述句--一條是定義output,另一條是創建發布者。如果你只有一個陳述句,它將被視為一個隱含的回傳,你就不會出現錯誤。
我認為你可以稍微重構一下,去掉var output,因為每個值都被修改了相同的數量。因此,你只需在另一個map上粘附即可:
public lazy var annualRate: AnyPublisher<Double, Never> = {
$term
.map { switchCase -> Double in
switch switchCase {
case .tenYear:
return self.rate.tenYearFix
case .fifteenYear:
return self.rates.15YearFix
case .twentyYear:
return self.rates.20YearFix
case .thirtyYear:
return self.rate.30YearFix
}
}
.map { $0 * 0.01 }
.eraseToAnyPublisher()
}()
現在,只有一個陳述句,這被認為是一個隱含的回傳,沒有什么是未使用的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/323138.html
標籤:
