swift3으로 마이그레이션 한 후 안녕하세요. 이 문제가 있습니까? 너희들이 뭘 잘못 알고 있니? 내가 당신이라면 회원에게swift3에서 모호한 참조
모호한 참조 "/"
let rateForPeriod = interestRate!/Double(100)/Double(K.monthsEachYear)
swift3으로 마이그레이션 한 후 안녕하세요. 이 문제가 있습니까? 너희들이 뭘 잘못 알고 있니? 내가 당신이라면 회원에게swift3에서 모호한 참조
모호한 참조 "/"
let rateForPeriod = interestRate!/Double(100)/Double(K.monthsEachYear)
, 내가 사용하는 것이 옵션 interestRate이 전무인지 여부를 확인하기 위해 바인딩.
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)
우리는 무엇을해야합니까 : 예상대로 한 번에 하나의 부서를하고 작동하는지
는주? 당신이 interestRate는 선택하지 않을 수 있도록 가드 절을 사용하거나이 같은 기본 값을 제공 할 수있는 경우
시도를 확인합니다 : let rate = interestRate ?? 0
.
'interestRate'의 유형? –
이중형 형 –
이렇게 쓰면 오류가 사라집니다. var rateForPeriod = interestRate!/Double (100) rateForPeriod = rateForPeriod/Double (K.monthsEachYear) 이 문제를 해결하는 올바른 방법이 있습니까? –