[Swift]Day12:类型转换

类型转换

类型判断

我们可以通过 is 来判断一个实例是否属于指定类或者其子类,功能类似以 OC 中的 isKindOfClass 。

我们通过一个简单的例子演示一下:

class A {
}

class B: A {
}

class C: A {
}

var array = [B(),A(),C(),A()]   // [A]

for item in array {
    if item is B {
        println("B")    // 1 time
    }
    if item is C {
        println("C")    // 1 time
    }
    if item is A {      // ERROR! ALWAYS TRUE
        println("C")    // 1 time
    }
}

向下转型

可以用类型转换操作符 as 尝试将某个实例转换到它的子类型。转换没有真的改变实例或它的值。潜在的根本的实例保持不变;只是简单地把它作为它被转换成的类来使用。

比如下面这段代码:

class A {
}

class B: A {
}

class C: A {
}

var array = [B(),A(),C(),A()]   // [A]

for item in array {
    if let aB = item as? B {
        println("aB")    // 1 time
    }

    if let aC = item as? C {
        println("aC")    // 1 time
    }
}

Any 和 AnyObject

Swift为不确定类型提供了两种特殊类型别名:

  • Any 可以表示任何类型,除了方法类型(function types)。
  • AnyObject 可以代表任何class类型的实例。

References

时间: 2024-08-07 10:49:43

[Swift]Day12:类型转换的相关文章

Swift之类型转换

在你的代码中即使知道整数常量和变量是非负数也用Int类型来通用于所有的整数.在平常情况下使用默认的整数类型意味着整数常量和变量能及时的相互操作,并且能通过整数字面量值来匹配推断出的类型. 只有在当前任务的一些特定需求时才使用其它整数类型,因为来自外来的数据的大小是明确的,或者是因为性能,内存使用,或者其它必要的优化.在这些情况下用大小明确的类型用助于捕获意外的值溢出和被用于隐式文本所使用的原始值. 整数转换 对于每种数字类型的常量或变量所能存储的数字的范围是各不相同的.一个Int8的常量或者变量

Swift 对象类型转换

Swift 中对象是可以转换的,因为面向对象就会涉及继承,子类,父类等等 有几点规则我们先说一下 子类对象可以直接转换为父类对象的 父类对象可以有条件的转换为子类对象,这个我们下边在讲 首先我们创建三个类  人 Homan  男人 Man  男孩 Boy Man 继承 Homan Boy 继承 Homan 那么,就可说  Man 是 Homan 的子类 Boy 是 Homan的子类 Homan  是 Man的父类 Homan 是 Boy的父类 class Homan{ var name="&qu

swift中文文档- 类型转换

未翻译完 待续(英语烂,求斧正) Type Casting 类型转换 Type casting is a way to check the type of an instance, and/or to treat that instance as if it is a different superclass or subclass from somewhere else in its own class hierarchy. 类型转换是检测实例所属类型的一种方法,和/或 去对待实例好像它是一个

iOS开发系列--Swift语言

Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了 ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在其中你可以看到C#.Java.Javascript.Python等多种语言的影子.同时在 2015年的WWDC上苹果还宣布Swift的新版本Swift2.0,并宣布稍后Swift即将开源,除了支持iOS.OS X之外还将支持linux. 本文将继续iOS开发系列教程,假设读者已经有了其他语言基础(强烈建

swift小结01--基础篇

2014年推出的swift目前已来到了3.0,日趋稳定,这个是之前学习整理的关于swift的资料,分享给大家,希望有用,写的不足的地方还请见谅. 语言背景: Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序. 语言优势: 让应用开发更简单.更快.更稳定 确保最终应用有着更好的质量 一些简单的特点: 不用:号结束 方法和属性都是用.来使用  区别是方法后有( ),而属性没有( ) 在 Swift 中使用 print() 替代 OC 中的 NSLog 在 Sw

Swift程序入口深度分析

1.swift为什么不需要main 在c/c++及其它语言中都有一个main函数,程序从main作为起点,开始执行程序,如下: int main(int argc, const char * argv[]) { printf("Hello, World!\n"); return 0; } main函数实际上是一个特殊的函数,为了能找到程序入口,大多楼语言都约定main()函数作为入口.那么为什么在Swift中没有这样的一个函数呢?先看一下官方的解释 Code written at gl

Swift视频教程第1讲开篇介绍

Swift视频教程第1讲开篇介绍 一.在线浏览 视频内容:Swift视频教程第1讲开篇介绍 Xcode版本:6.1 个人主页:http://00red.com 二.百度网盘资源下载 PPT下载 高清视频下载 三.Swift程序入口深度分析(课外拓展) 1.swift为什么不需要main 在c/c++及其它语言中都有一个main函数,程序从main作为起点,开始执行程序,如下: 1 2 3 4 int main(int argc, const char * argv[]) { printf("He

Swift的简单使用

"Swift 是一种新的编程语言,用于编写 iOS,OS X 和 watchOS应用程序.Swift 结合了 C 和 Objective-C 的优点并且不受 C 兼容性的限制.Swift 采用安全的编程模式并添加了很多新特性,这将使编程更简单,更灵活,也更有趣.Swift 是基于成熟而且倍受喜爱的 Cocoa 和 Cocoa Touch 框架,它的降临将重新定义软件开发. Swift 的开发从很久之前就开始了.为了给 Swift 打好基础,苹果公司改进了编译器,调试器和框架结构.我们使用自动引用

More Effective C++

条款一:指针与引用的区别 指针与引用看上去完全不同(指针用操作符'*'和'->',引用使用操作符'.'),但是它们似乎有相同的功能.指针与引用都是让你间接引用其他对象.你如何决定在什么时候使用指针,在什么时候使用引用呢? 首先,要认识到在任何情况下都不能用指向空值的引用.一个引用必须总是指向某些对象.因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量.相反,如果变量肯定指向一个对象,例如你的设计不允许变量为