快捷搜索:
来自 计算机编程 2019-07-01 13:26 的文章
当前位置: 67677新澳门手机版 > 计算机编程 > 正文

三种操作符如何使用

let age = 28 as Int
let money = 20 as CGFloat
let cost = (50 / 2) as Double
let person : Person = Teacher("Jimmy Lee")
let jimmy = person as! Teacher

运作结果:
是Student类型,打字与印刷学生成绩单...

(1)从派生类转变为基类,向上转型(upcasts)

(2)化解二义性,数值类型调换

// 定义人员基类
class Person {
    var name : String

    init(_ name: String){
        self.name = name
    }
}

// 定义学生类
class Student : Person {
}

// 定义教师类
class Teacher : Person {
}

// 处理人员对象的函数(或工厂模式处理操作等)
func showPersonName(_ people : Person){
    let name = people.name
    print("这个人的名字是: (name)")
}

// 定义一个学生对象 tom
var tom = Student("Tom");

// 定义一个教师对象 kevin
var kevin = Student("Kevin Jakson");

// 先把学生对象向上转型为一般的人员对象
let person1 = tom as Person
let person2 = kevin as Person

// 再调用通用的处理人员对象的showPersonName函数
showPersonName(person1)
showPersonName(person2)
switch person1 {
    case let person1 as Student:
        print("是Student类型,打印学生成绩单...")
    case let person1 as Teacher:
        print("是Teacher类型,打印老师工资单...")
    default: break
}

as? 和 as! 操作符的调换法则一模一样。但 as? 假使转换不成事的时候便会重回多个 nil 对象。成功的话再次回到可选类型值。由于 as? 在退换失败的时候也不会并发错误,所以对于假如能担保百分百会中标的转移则可使用 as!,不然使用 as?

1. as

斯威夫特是苹果于二零一六年宣布的新开荒语言,运营于Mac OS和iOS平台,开垦基于苹果平台的应用程序。在运用斯威夫特语言的时候,大家平常会被 as、as!、as?三体系型调换操作符混淆,这里总括了二种操作符的用法。

向下转型(Downcasting)时选取。由于是威逼类型转变,假诺转变战败会报 runtime 运转错误。

let person : Person = Teacher("Jimmy Lee")

if let someone = person as? Teacher{
    print("这个人是教师, 名字是 (someone.name)")
} else {
    print("这个人不是教师, 'tom'的值是 nil")
}

运作结果:
其一位是教员职员和工人, 名字是 吉姆my Lee

2. as!

3. as?

(3)switch 语句中实行格局相配
透过switch语法检查评定对象的连串,依照目的类型举行拍卖。

 

运作结果:
本条人的名字是: 汤姆
其一人的名字是: 凯文 Jakson

本文由67677新澳门手机版发布于计算机编程,转载请注明出处:三种操作符如何使用

关键词: