Я использую следующий 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 или игровой площадки (независимо от того, предназначено это или нет, я не могу сказать) – Hamish
@Hamish На основании вашего комментария я пересмотрел свои вопрос. Я все равно хотел бы знать, почему область действия оператора вызывает предупреждение. – wigging