Any、AnyObject、as

简介: Swift中增加了两种类型别名Any:可表示任意类型,(Int、Double等值类型)。AnyObject:可表示任意class类型实例, 一个任何对象类型的数组Any类型: class Calculate { var NumberA:A...

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
相关文章
|
Arthas HandyJSON 监控
阿里巴巴常用的 12 个后端开发工具,建议你快快收藏。。
从手动编码到自动化,从重复工作到创新,开发人员工具随着技术的发展而不断发展。阿里巴巴集团和阿里巴巴云已通过开源发布和基于云的实施向公众提供其技术。通过在各种业务场景中的多年开发积累了这些技术。
|
存储 索引 Python
python学习 函数模块,数据结构,字符串和列表(下)
例子1.寻找水仙花数。 说明:水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,它是一个3位数,该数字每个位上数字的立方之和正好等于它本身.
193 0
使用Java 8的二元函数BiFunction,采用函数式编程思维实现List元素的自定义排序功能
使用Java 8的二元函数BiFunction,采用函数式编程思维实现List元素的自定义排序功能
224 0
|
Java 程序员 Go
Java 有值类型吗?
有人看了我之前的文章『Swift 语言的设计错误』,问我:“你说 Java 只有引用类型(reference type),但是根据 Java 的官方文档,Java 也有值类型(value type)和引用类型的区别的。比如 int,boolean 等原始类型就是值类型。” 现在我来解释一下这个问题。 Java 有值类型,原始类型 int,boolean 等是值类型,其实是长久以来的一种误解,它混淆了实现和语义的区别。不要以为 Java 的官方文档那样写就是权威定论,就可以说“王垠不懂” :) 当你认为王垠不懂一个初级问题的时候,都需要三思,因为他可能是大智若愚…… 看了我下面的论述,也许你会
150 0
|
程序员 Android开发 Swift
iOS 音视频开发的一些基础准备工作
最近在捣鼓 iOS 上的音视频开发,由于之前并没有 iOS 开发经验,直接上手写代码的话压力还是挺大的,因此也趁机看了下 iOS 开发的内容,算是做一些准备工作吧。
308 0
iOS 音视频开发的一些基础准备工作
|
Web App开发 前端开发 程序员
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
本群管理规则如下五条: 0.新人入群改群名片: 城市-昵称; 在程序员的世界里, 名片代表着名字, 同时是尊重他人, 尊重自己! 1.
562 0
|
机器学习/深度学习 监控 应用服务中间件
监控命令之tsar
1.1 tsar是什么?   tsar是淘宝自己开发的一个采集工具(类似于sar工具),主要用来收集服务器的系统信息(如cpu,io,mem,tcp等),以及应用数据(如squid haproxy nginx等)。
2096 0
|
Web App开发 数据安全/隐私保护 iOS开发
iOS 开发之密码规则
密码规则 / UIText​Input​Password​Rules 原文 也难怪 hipster 们着迷于工艺品和手工制品。不管是一片厚切鳄梨吐司、一瓶限量(非乳制)姜黄奶或一杯完美的手冲咖啡——其中的人情味是无法替代的。
1341 0