【问题标题】:swift How to determine if a variable is an optionalswift如何确定变量是否是可选的
【发布时间】:2015-07-15 12:52:55
【问题描述】:

我想知道一个变量是否是可选的

我尝试了下面的方法,但失败了

func isOptional(v: Any) -> Bool {
    return v is Optional
}

【问题讨论】:

  • 这听起来像是一个 XY 问题...我的意思是...你可以在编译时知道...
  • How to determine if a generic is an optional in Swift? 的可能重复项(具体而言,Any 不能是可选的,但泛型可以是可选的)
  • @nhgrif 谢谢你的评论。我也看到了这个问题。我是 swift 新手,这对我来说很难。

标签: swift optional


【解决方案1】:

作为一个学术练习(可以做还是应该做),我想出了这个:

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 的输出保持不变。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    相关资源
    最近更新 更多