Any、AnyObject、as

来源:互联网 发布:c语言default的用法 编辑:程序博客网 时间:2024/06/06 05:13

Swift中增加了两种类型别名

  • Any:可表示任意类型,(Int、Double等值类型)。

  • AnyObject:可表示任意class类型实例, 一个任何对象类型的数组

Any类型:

     class Calculate    {    var NumberA:Any!    var NumberB:Any!    init(Numbera:Any,Numberb:Any)    {        self.NumberA=Numbera        self.NumberB=Numberb    }    func douberNumberAdd()->Any!    {        var Result:Any!        if((NumberA as? Int) != nil && (NumberB as? Int) != nil)        {            var A=NumberA as? Int            var B=NumberB as? Int            var Result:Int            Result=A!+B!            return Result        }        var A=NumberA as? Double        var B=NumberB as? Double        var Resul:Double        Resul=A!+B!        return Resul    }    }    var a1=Calculate(Numbera: 10, Numberb: 10)    var b1=a1.douberNumberAdd()        print("\(b1)")       var a2=Calculate(Numbera: 10.00011, Numberb: 10.00011)       var b2=a2.douberNumberAdd()        print("\(b2)") 输出值:         20         20.00022

上面用到了Any类型实现了同一个函数方法可以使用Int类型的参数或Double类型的参数,在函数实现内部运用as?判断具体的参数类型,调用该调用的方法。

AnyObject类型

AnyObject类型类似于Object-C中的id类型,可以用AnyObject类型代替任意class类型。

结合上面的代码运用AnyObject

 var anyObjectArray:[AnyObject]=[    Calculate(Numbera: 10.00011, Numberb: 10.00011),      Calculate(Numbera: 10, Numberb: 10) ]  for anyObject in anyObjectArray  {    let  anyobj=anyObject as? Calculate    print("NumberA:\(anyobj!.NumberA),NumberB:\(anyobj!.NumberB)")    }

输出值:

       NumberA:10.00011,NumberB:10.00011       NumberA:10,NumberB:10
1 0
原创粉丝点击