【发布时间】:2017-02-17 10:54:13
【问题描述】:
我使用以下 Swift 代码根据单位值设置键字符串:
let units = 0
let key = units == 0 ? "F" : "C"
// this example makes key = "F"
上面的例子在 Swift 文件的全局范围内可以正常工作,没有任何警告。但是,当我将相同的代码放入初始化程序或函数中时,我会收到涉及“C”术语的警告:
struct Almanac {
// properties
}
extension Almanac {
init?(json: [String: Any]) {
let units = 0
let key = units == 0 ? "F" : "C" // WARNING: Will never be executed
// ...
}
}
func logunits() {
let units = 0
let key = units == 0 ? "F" : "C" // WARNING: Will never be executed
print("key is \(key)")
}
为什么只有在本地范围内使用三元条件时才会出现此警告?
【问题讨论】:
-
据我所知,这与失败的初始化器无关——如果你只是将代码放在一个函数中,你会得到同样的警告。只有当它位于 main.swift 文件或 Playground 的顶层时,它才不会给你警告(无论是否有意,我不能说)
-
@Hamish 根据您的评论,我修改了我的问题。我仍然想知道为什么操作符的范围会导致警告。
标签: swift struct initialization conditional-operator