Я хочу знать, является ли переменная необязательной
Я пробую метод ниже, но терплю неудачу
func isOptional(v: Any) -> Bool {
return v is Optional
}
Я хочу знать, является ли переменная необязательной
Я пробую метод ниже, но терплю неудачу
func isOptional(v: Any) -> Bool {
return v is Optional
}
В качестве академического упражнения (можно ли это сделать или нужно ли это делать) я придумал следующее:
func isOptional(a: Any) -> Bool {
return "\(a.dynamicType)".hasPrefix("Swift.Optional")
}
Пример:
let name = "Fred"
let oname: String? = "Jones"
let age = 37
let oage: Int? = 38
let arr: [Any] = [name, oname, age, oage]
for item in arr {
println("\(item) \(isOptional(item))")
}
Выход:
Fred false
Optional("Jones") true
37 false
Optional(38) true
Могу ли я рекомендовать использовать это в производственном коде? Нет. Я рекомендую держаться подальше от Any
, если это вообще возможно, и я бы не стал делать ставку на то, что результат dynamicType
останется прежним.
Any
не может быть необязательным, но общий может быть необязательным) - person nhgrif   schedule 15.07.2015