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
Any、AnyObject、as的更多相关文章
- Swift中的Any 与 AnyObject、AnyClass的区别?
在 Swift 中能够表示 “任意” 这个概念的除了Any .AnyObject以外,还有一个AnyClass. Any.AnyObject.AnyClass有什么区别: AnyObject是一个成员 ...
- iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控
-- iOS事件全面解析 概览 iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的,这不愧为一项伟大的设计.今天我们就针对iOS的触摸事 ...
- IOS 手势-轻点、触摸、手势、事件
1.概念 手势是从你用一个或多个手指接触屏幕时开始,直到手指离开屏幕为止所发生的所有事件.无论手势持续多长时间,只要一个或多个手指仍在屏幕上,这个手势就存在. 触摸是指把手指放到IOS设备的屏幕上,从 ...
- iOS-触摸事件、手势识别、摇晃事件、耳机线控
概览 iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的,这不愧为一项伟大的设计.今天我们就针对iOS的触摸事件(手势操作).运动事件. ...
- swift:用UITabBarController、UINavigationController、模态窗口简单的搭建一个QQ界面
搭建一个QQ界面其实是一个很简单的实现,需要几种切换视图的控制器组合一起使用,即导航控制器.标签栏控制器.模态窗口.其中,将标签栏控制器设置为window的rootViewController,因为Q ...
- OC: 数组、集合、字典
数组.字典.集合 参考1 参考2 参考3 参考4 参考5 NSArray * nn = @[@"元素1",@"元素2",@"元素3&quo ...
- 转发:iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控
-- iOS事件全面解析 转载来自崔江涛(KenshinCui) 链接:http://www.cnblogs.com/kenshincui/p/3950646.html 概览 iPhone的成功很大一 ...
- iOS 事件的产生、传递、响应
一.事件的产生和传递 1.1.事件的产生 发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件队列中为什么是队列而不是栈?因为队列的特定是先进先出,先产生的事件先处理才符合常 ...
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...
随机推荐
- Java异常处理机制及两种异常的区别
java异常处理机制主要依赖于try,catch,finally,throw,throws五个关键字. try 关键字后紧跟一个花括号括起来的代码块,简称try块.同理:下面的也被称为相应的块. ...
- 【单调队列】bzoj2096 [Poi2010]Pilots
用两个单调队列维护序列中的最大值和最小值即可. poi~ #include<cstdio> #include<algorithm> using namespace std; i ...
- [CF413D]2048
题目大意: 在一个长度为$n(n\le2000)$的数组中填数$2$或$4$,待所有数字全部填好后,按照类似于2048的规则向左合并.给定某些格子上的数,问在当前情况下要使得合并后的最大数超过$2^k ...
- 将千克转换成磅 Exercise05_03
/** * @author 冰樱梦 *题目:将千克转换成磅 *时间:2018年下半年 */ public class Exercise05_03 { public static void main(S ...
- Delphi 获取sqlite中所有的表名
取得sqlite数据库里所有的表名 查询table,type 段是'table',name段是table的名字, so: select name from sqlite_master where ty ...
- webpack-dev-server最简单的应用
1.安装 npm install webpack-dev-server --save-dev 2.再exports后加多一个对象即可 devServer: { contentBase: ". ...
- [Android Memory] Android 的 StrictMode
android的2.3 之后引入的StrictMode 对网络的访问做了限制啊. public void onCreate() { if (DEVELOPER_MODE) { StrictMode.s ...
- javascript快速入门24--XML基础
XML简介 XML代表Extensible Markup Language(eXtensible Markup Language的缩写,意为可扩展的标记语言).XML 被设计用来传输和存储数据.XML ...
- npm模块安装机制
npm 是 Node 的模块管理器,功能极其强大.它是 Node 获得成功的重要原因之一.正因为有了npm,我们只要一行命令:npm install,就能安装别人写好的模块 . 一.从 npm ins ...
- float:center???
老规矩,先上图(请忽略图中文字^V^): 乍一看感觉是对中间的图片使用了float:center;可是细致一想float属性是没有center这个值的. 那是怎么实现的呢?我一步一步拆给大家看. 1. ...