Iは単位値に応じて、キーの文字列を設定するために、次のスウィフトコードを使用:警告は、ローカルスコープで発生
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)")
}
はなぜこの警告は表示されません範囲?
を私の知る限り見ることができるように、これは持っている:任意のコードが
units
の値が、この例のようにも愚かなものを変更することができますパスにありますならば、警告がまた消えること注意failable initialisersとは何の関係もありません。コードを関数に置くだけで同じ警告が表示されます。 main.swiftファイルの最上位にあるとき、または遊び場にいるときに警告を出すことはありません(これが意図されているかどうかはわかりません) – Hamish
@ハミッシュあなたのコメントに基づいて、質問。私はまだオペレータの範囲が警告を引き起こす理由を知りたいです。 – wigging