swift3への移行後のHi。私はこの問題を抱えていますか?あなたの人は何が間違っているのか分かりますか?swift3でのあいまいな参照
メンバーへのあいまいな参照に「/」
let rateForPeriod = interestRate!/Double(100)/Double(K.monthsEachYear)
swift3への移行後のHi。私はこの問題を抱えていますか?あなたの人は何が間違っているのか分かりますか?swift3でのあいまいな参照
メンバーへのあいまいな参照に「/」
let rateForPeriod = interestRate!/Double(100)/Double(K.monthsEachYear)
私があなただったら、私は利率がゼロであるかどうかをチェックするためにオプションの結合を使用します。
let interestRate: Double? = 0.4
if let interestRate = interestRate {
let rateForPeriod = interestRate/Double(100)/Double(1)
}
おめでとうございます! コンパイラにバグが見つかりました!
のは、あなたのコードのいくつかのバリエーションを試してみましょう:
これは失敗します。
let optional: Double? = 1
let result = optional!/Double(1)/Double(1)
これは動作します:
let optional: Double? = 1
let unwrapped = optional!
let result = unwrapped/Double(1)/Double(1)
これは失敗します。
let rateForPeriod = (Double(1) as Double?)!/Double(1)/Double(1)
しかし、この作品を:
let rateForPeriod = ((Double(1) as Double?)! as Double)/Double(1)/Double(1)
だから、これはあまりにも動作します:
let optional: Double? = 1
let rateForPeriod = optional! as Double/Double(1)/Double(1)
新しいオプションのアンラップルールの副作用(おそらくバグ)であると思われます。一度に一つだけ分裂を行うことは期待通りに動作することを
注:私たちは何を
let optional: Double? = 1
let rateForYear = optional!/Double(1)
let rateForPeriod = rateForYear/Double(1)
をすればよいですか?
てみアンラップファイルバグレポートを
let rate = interestRate ?? 0
。
「interestRate」の種類? –
ダブルタイプの仲間 –
このように書くと、エラーが消えてしまったようです。 var rateForPeriod = interestRate!/Double(100) rateForPeriod = rateForPeriod/Double(K.monthsEachYear) これを修正する正しい方法はありますか? –