数字类迅捷

时间:2014-10-10 23:50:49

标签: swift casting

有没有办法轻松确定某个值是否为数字?我正在通过快速的标准库查看,似乎无法得出任何结论。像这样:

    var val: Any = ...
    if let number = val as? Number {
        //do something
    }

我真的不需要抛出它只是弄清楚它是否是一个数字。而不是做一堆Int,Double等检查。

1 个答案:

答案 0 :(得分:2)

给定Any类型的变量,您可以使用如下函数检查它是否为数字:

func isNumber(value: Any) -> Bool {
    return (value is Int) || (value is UInt) || (value is Float) || (value is Double)
}

有趣的情况,如果变量属于AnyObject类型,则为以下任何一种:

value is Int
value is UInt
value is Float
value is Double
value is Bool
对于所有这些数据类型,

将返回true

  • Int
  • UInt
  • Float
  • Double
  • Bool

所以例如:

let x: AnyObject = false
x is Int // <== evaluates to true
x is Float // <== evaluates to true