美文网首页
第十八节 Swift 中的类型转换

第十八节 Swift 中的类型转换

作者: 码客南君 | 来源:发表于2020-07-14 14:09 被阅读0次

在Swift中一般使用 is 关键字实现类型检查,使用 as关键字实现类型转换。

为类型转换定义类层次

下面定义了三个类:Person、Chinese和American。Chinese 和 American 是 Person的子类。

代码示例:

先定义一个 Person基类

class Person {
    var weight:Float
    init(weight:Float) {
        self.weight = weight
    }
}

再定义两个Person的子类

class Chinese: Person {
    var name:String = "张三"
    init(name:String,weight:Float) {
        super.init(weight: weight)
        self.name = name
    }
}

class American: Person {
    var age:Int = 30
    init(age:Int,weight:Float) {
        super.init(weight: weight)
        self.age = age
    }    
}

最后创建一个名为 People的数组,包含两个 Chinese实例和两个 American实例。

People数组的类型是在初始化的时候根据包含的实例推断出来,Swift类型检查器可以推断 Chinese和 American有一个共同的父类 Person,所以 People的类型推断为 [Person]。

let People = [
Chinese(name: "张三", weight: 50.0),
American(age: 30, weight: 60.0),
Chinese(name: "李四", weight: 55.0),
American(age: 40, weight: 65.0)
]
// "People" 的类型被推断为[Person]

类型检查

通过类型检查操作符 ( is )来检查一个实例是否属于一个特定的子类。
如果实例是该子类类型,类型检查操作符返回 true ,否则返回 false 。

代码示例

var ChineseCount = 0
var AmericanCount = 0
 
for people in People {
    if people is Chinese {
        ChineseCount += 1
    } else if item is American {
        AmericanCount += 1
    }
}

类型转换

as 和 is相比,除了可以检查类型外,还可以访问子类的属性或方法。

代码示例

for person in Person {
  if let chi = person as? Chinese {
    print(chi.name)
  } else if let ame = person as? American {
    print(ame.age)
  }
}

相关文章

  • 第十八节 Swift 中的类型转换

    在Swift中一般使用 is 关键字实现类型检查,使用 as关键字实现类型转换。 为类型转换定义类层次 下面定义...

  • 2019-05-05: 九:Swift中类型转换?

    一:Swift中类型转换?

  • 洞悉Objective-C和swift类型转换的处理机制

    Objective-C和swift中可以互相转换和能够互相使用的类型,被称为bridged类型。所有swift类型...

  • 从零开始学swift之基本类型

    浮点数和类型转换 浮点数 2.类型转换在swift中没有类型的自动转换,因为很多错误都可能因为类型隐式转换导致错误...

  • 类型转换

    Swift 语言类型转换可以判断实例的类型。也可以用于检测实例类型是否属于其父类或者子类的实例。Swift 中类型...

  • Swift 之类型转换

    Swift 语言类型转换可以判断实例的类型。也可以用于检测实例类型是否属于其父类或者子类的实例。Swift 中类型...

  • 笔记整理(Swift基本语法一)

    类型推导 基本运算 相通类型之间才能进行运算 Swift 中没有隐私转换 Int 类型转换成Double类型,使用...

  • Swift 类型转换 (as as! as? 区别)

    Swift 语言中类型转换使用的关键字是as,与类型检查相似,Swift语言中的类型转换有向上兼容向下转换之分,也...

  • Swift 类型转换

    Swift 语言类型转换可以判断实例的类型。也可以用于检测实例类型是否属于父类或者子类的实例。Swift 中类型转...

  • Swift中类型转换

    这个类型的转换是给相应类加了分类,直接用点语法就可以调用。 Int转Float、Double、String: Fl...

网友评论

      本文标题:第十八节 Swift 中的类型转换

      本文链接:https://www.haomeiwen.com/subject/pkaxhktx.html