Any、AnyObject、as

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
时间: 2024-10-13 11:41:22

Any、AnyObject、as的相关文章

Swift入坑--Any、AnyObject、AnyClass有什么区别

Any: Any是一个空协议集合的别名,它表示没有实现任何协议,因此它可以是任何类型,包括类实例与结构体实例. Any是一个别名. /// 一个任何类型都遵守的协议类型 typealias Any = protocol<> AnyObject: AnyObject是一个成员为空的协议,任何对象都实现了这个协议. 看一下AnyObject的定义: @objc protocol AnyObject { } AnyClass: AnyClass是AnyObject.Type的别名而已. 看一下Any

Swift 数组、字符串、集合与字典详解

今天我们来看几个最基本的数据结构:数组,字符串,集合和字典. 数组 数组是最基本的数据结构.Swift编程语言中改变了以前Objective-C时代NSMutableArray和NSArray分开的做法,统一到了Array唯一的数据结构.下面是最基本的一些实现. 1 2 3 4 5 6 7 8 9 10 11 // 声明一个不可修改的数组 let nums = [1, 2, 3] let nums = [Int](count: 5, repeatedValue: 0) // 声明一个可以修改的数

iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控

-- iOS事件全面解析 概览 iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的,这不愧为一项伟大的设计.今天我们就针对iOS的触摸事件(手势操作).运动事件.远程控制事件等展开学习: iOS事件简介 触摸事件 手势识别 运动事件 远程控制事件 iOS事件 在iOS中事件分为三类: 触摸事件:通过触摸.手势进行触发(例如手指点击.缩放) 运动事件:通过加速器进行触发(例如手机晃动) 远程控制事件:通过其他远程设备触发(例如耳机控制

自定义UITableViewCell:Cell高度、分割线、间距等

UITableView的强大更多程度上来自于可以任意自定义UITableViewCell单元格. 通常,UITableView中的Cell是 动态的,在使用过程中,会创建一个Cell池,根据每个cell的高度(即tableView:heightForRowAtIndexPath:返回 值),以及屏幕高度计算屏幕中可显示几个cell.而进行自定义TableViewCell无非是采用代码实现或采用IB编辑nib文件来实现两种方式, 本文主要收集代码的方式实现各种cell自定义. 如何动态调整Cell

OC - 数组、字典、集合

数组是一个有序的集合,OC中的数组只能存储对象类型,对于对象的类型是没有限制的 NSArray:不可变数组 :对象创建好以后,数组中的元素个数不能发生变化 NSSMutableArray : 可变数组 : 对象创建好以后,数组中的元素可以灵活进行增删改操作 NSArray *names = [[NSArray alloc] initWithObjects:@"frank", @123, @"monkey", nil]; 注意 : nil作为数组存放元素的结束标志,多

IOS阶段学习第16天笔记(Category、NSSet、NSIndexSet的操作)

IOS学习(OC语言)知识点整理 一.NSSet.NSMutableSet集合的介绍 1)NSSet.NSMutableSet集合,元素是无序的,不能有重复的值. 2)用实例方法创建一个不可变集合对象 例如: //宏定义 #define TOBJ(n) [NSNumber numberWithInt:n] NSSet *set1=[[NSSet alloc]initWithObjects:TOBJ(2),TOBJ(3),TOBJ(3),TOBJ(1),TOBJ(5), nil]; 2)用类方法创

转发:iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控

-- iOS事件全面解析 转载来自崔江涛(KenshinCui) 链接:http://www.cnblogs.com/kenshincui/p/3950646.html 概览 iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的,这不愧为一项伟大的设计.今天我们就针对iOS的触摸事件(手势操作).运动事件.远程控制事件等展开学习: iOS事件简介 触摸事件 手势识别 运动事件 远程控制事件 iOS事件 在iOS中事件分为三类: 触摸事

转:自定义UITableViewCell:Cell高度、分割线、间距等

UITableView的强大更多程度上来自于可以任意自定义UITableViewCell单元格. 通常,UITableView中的Cell是 动态的,在使用过程中,会创建一个Cell池,根据每个cell的高度(即tableView:heightForRowAtIndexPath:返回 值),以及屏幕高度计算屏幕中可显示几个cell.而进行自定义TableViewCell无非是采用代码实现或采用IB编辑nib文件来实现两种方式, 本文主要收集代码的方式实现各种cell自定义. 如何动态调整Cell

UIApplication、UIView、UIWindow、UIScreen、UIViewController、UINavigationController 介绍

转载请声明出处:http://blog.csdn.net/jinnchang/article/details/44954803 1.前言 我们先来看一下这几个概念的类继承关系图: iOS 中,所有显示在界面上的对象都是从 UIResponder 直接或间接继承的. 2.应用程序(UIApplication) 一个 UIApplication 对象就代表一个应用程序.一个 iOS 程序启动后创建的第一个对象就是 UIApplication 对象(只有一个),而且是单例的.如有需要,可以通过如下代码