1.类型定义:

/// 这里将MyInt定义为Int32类型
typealias MyInt = Int32
 
/// 这里将MyArrayInt定义为[MyInt]数组类型
typealias MyArrayInt = [MyInt]

2.元类型:

“元类型(metatype)是指可引用某个类型的类型对象的类型。”

摘录来自: “大话Swift 4.0”。 iBooks. 
let a = .self
 
// 输出:a = 10
print("a = \(a)")
 
let tuple = (, 0.5, "abc").self
 
// 输出:tupe = (10, 0.5, "abc")
print("tupe = \(tuple)")
 
func foo() {
print("Foo...")
}
 
// 这里直接输出:Foo...
foo.self()

3.类型获取:

let mc: Prot = MyClass()
 
// 这里通过type(of:)函数来获取mc对象的元类型实体,
// type(of: mc)所返回的类型就是MyClass.Type
typeFetch(t: type(of: mc))

4.Any和AnyObject:

“Swift编程语言中提供了两个根类型,
一个是 Any,它可用于指向Swift中的任一类型,
包括函数类型与元组类型;
还有一个是 AnyObject,它其实是一个协议类型,用于指向Swift中的任一类类型的对象引用。
引入 AnyObject 的主要目的还是为了能与Objective-C进行方便对接。” 摘录来自: “大话Swift 4.0”。 iBooks.
struct MyStruct { }
 
class MyClass { }
 
func foo() { }
 
// 声明Any类型的对象obj
var obj: Any
 
// obj指向MyStruct结构体的对象实例
obj = MyStruct()
 
// obj指向MyClass类的对象实例
obj = MyClass()
 
// obj指向一个(Int, Double, String)元组对象
obj = (, 2.0, "abc")
 
print("obj = \(obj)")
 
// obj指向函数foo的引用
obj = foo
 
// 这里定义了AnyObject类型的对象引用cls
// 并将它指向MyClass对象实例
let cls: AnyObject = MyClass()

5.类型投射:

“在Swift编程语言中提供了两种类型投射操作符,分别为 as! 与 as?。
由于向下投影操作可能会失败,所以一般情况下我们可以使用 as? 进行操作,它返回一个Optional对象,
如果投射失败,则会返回空值 nil。
如果我们能确保当前对象能被安全投射到我们所指定的类型,那么可以使用 as!。
该操作符直接返回类型投射之后的对象,不过如果万一投射失败,则运行时就会发生异常崩溃。” 摘录来自: “大话Swift 4.0”。 iBooks.

6.类型检查:

if obj is Child {
print("This is Child")
}

7.嵌套类型:

“嵌套类型中可访问外部类型中的私有成员,但外部类型则不可访问其嵌套类型的私有成员。”

摘录来自: “大话Swift 4.0”。 iBooks. 

Swift4.0复习类型定义、类型投射等操作的更多相关文章

  1. Swift4.0复习特性、编译标志和检查API的可用性

    1.Swift中的特性: @引出,后面紧跟特性名,圆括号带参数即可. @attribute(args) avaiable: 指明对象,函数,类型的可用性. @available(iOS 10.0, m ...

  2. Swift4.0复习访问控制与作用域

    1.访问等级: open: 可以继承,可以重写. public: “public 访问等级能用于修饰所有文件作用域的函数.对象.协议.枚举.结构体.类以及各种类型中的属性与方法.用 public 所修 ...

  3. Swift4.0复习错误处理

    1.Swift中错误的表示: “在Swift中如果我们要定义一个表示错误的类型非常简单,只需遵循 Error 协议即可.我们通常用枚举或结构体类型来表示错误类型,当然枚举可能用得更多些,因为它能更直观 ...

  4. Swift4.0复习协议

    1.协议的定义: /// 定义一个协议MyProt protocol MyProt {   /// 声明了一个实例方法foo, /// 其类型为:() -> Void func foo()   ...

  5. Swift4.0复习泛型

    1.泛型的基本使用: /// 定义了一个泛型结构体MyStruct, /// 其泛型形参为T struct MyStruct<T> {   /// 用泛型T定义存储式成员属性t var t ...

  6. Swift4.0复习扩展

    1.扩展计算式属性: 2.对方法进行扩展: /// 定义枚举类型Light, /// 它指定了基本类型String enum Light: String { case red = "red& ...

  7. Swift4.0复习类

    1.类的属性: 2.类的方法: 3.类作为引用类型: “Swift新增了一对操作符 === 与 !== 用于判定同一个类的两个对象引用是否指向同一对象实例.” 摘录来自: “大话Swift 4.0”. ...

  8. Swift4.0复习结构体

    1.基本语法: /** 定义了一个结构体 */ struct Structure {   /// 一个常量存储式实例属性, /// 并直接为它初始化 let constProperty =   /// ...

  9. Swift4.0复习枚举

    1.枚举类型: “Swift编程语言中,枚举类型属于值类型,而不是引用类型.” 摘录来自: “大话Swift 4.0”. iBooks. 2.枚举类型和枚举对象的定义: enum Enumeratio ...

随机推荐

  1. 倒水问题UVA 10603——隐式图&&Dijkstra

    题目 给你三个容量分别为 $a,b,c$ 的杯子,最初只有第3个杯子装满了水,其他两个杯子为空.最少需要到多少水才能让一个某个杯子中的水有 $d$ 升呢?如果无法做到恰好 $d$ 升,就让某个杯子里的 ...

  2. Java中复合赋值运算符自动进行强制类型转换

    public class Operation { public static void main(String[] args) { int num1 = 10; num1 = num1 / 2.2; ...

  3. Kubernetes 学习7 Pod控制器应用进阶2

    一.容器探测器 1.所谓的容器探测无非就是我们在里面设置了一些探针,或者称之为传感器来获取相应的数据作为判定其存活与否或就绪与否的标准,目前k8s所支持的存活性和就绪性探测方式都是一样的. 2.k8s ...

  4. 1.5 synchronized其他概念

    synchronized锁重入: 关键字synchronized拥有锁重入的功能,也就是使用synchronized时,当一个线程得到了一个对象的锁后,再次请求此对象时是可以再次得到对象的锁. 输出结 ...

  5. P2502 [HAOI2006]旅行——暴力和并查集的完美结合

    P2502 [HAOI2006]旅行 一定要看清题目数据范围再决定用什么算法,我只看着是一个蓝题就想到了记录最短路径+最小生成树,但是我被绕进去了: 看到只有5000的边,我们完全可以枚举最小边和最大 ...

  6. python中创建字典的多种方法

    dict={} dict['key']='value dict={'key':"value","key2":"value2"} dict=d ...

  7. ubuntu之路——day8.4 Adam自适应矩估计算法

    基本上讲,Adam就是将day8.2提到的momentum动量梯度下降法和day8.3提到的RMSprop算法相结合的优化算法 首先初始化 SdW = 0 Sdb = 0 VdW = 0 Vdb = ...

  8. Assignment3:白盒测试以及测试框架简介

    一. 白盒测试简介       白盒测试又称结构测试.透明盒测试.逻辑驱动测试或基于代码的测试.白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及 ...

  9. JSON HiJacking攻击

    JSON劫持类似于CSRF攻击,为了了解这种攻击方式,我们先看一下Web开发中一种常用的跨域获取数据的方式:JSONP. 先说一下JSON吧,JSON是一种数据格式,主要由字典(键值对)和列表两种存在 ...

  10. docker 监控之 cadvisor

    我们可以使用多种方法监控容器的运行情况,比如EFK等,但是我们仍旧需要一个资源利用率监控系统.这个时候,google开发的cadvisor就可以帮上我们的忙了. cadvisor是google创建的用 ...