Swift2.0语言教程之类的嵌套与可选链接

Swift2.0语言教程之类的嵌套与可选链接Swift2.0语言类的嵌套

在一个类中可以嵌套一个或者多个类。它们的嵌套形式也是不同的,大致分为了两种:直接嵌套和多次嵌套。下面依次讲解这两种方式。

Swift2.0语言的直接嵌套

当一个类或者多个类直接嵌套在另外一个类,这时就构成直接嵌套,如图8.6所示。

图8.6类的嵌套

在图8.6中,类2、类3和类4都是直接嵌套在类1中。对于这种情况,使用类1的实例属性和方法,语法形式如下:

类1().属性类1().方法

使用类1的类型属性和方法的形式如下:

类1.属性类1.方法

使用类2的实例属性和方法,语法形式如下:

类1.类2().属性类1.类2().方法

使用类2的类型属性和方法的形式如下:

类1.类2.属性类1.类2.方法

类3和类4的使用方法类似。

【示例8-21】以下将定义一个直接嵌套的类NewClass,在此类中嵌套了Str1Class、Str2Class、Str3Class这3个类,和一个可以输出这3个类中属性内容的方法。在Str1Class、Str2Class、Str3Class这三个类中又定义了类型属性,它们都会返回一个字符串。代码如下:

在此代码中,在一个NewCllass类中有包含了3个类,分别为Str1Class、Str2Class、Str3Class。运行结果如下所示:

Swift2.0语言的多次嵌套

Swift中,类的嵌套不仅允许一次嵌套,还允许多次嵌套。这时的嵌套形式如图8.7所示。

图8.7类的嵌套2

类3和类4是直接嵌套在类2中,而类2又直接嵌套在类1。这样形成了多层嵌套。这时,如果访问类1的实例属性和方法,其语法形式如下:

类1().属性类1().方法

访问类1的类型属性和方法,其语法形式如下:

类1.属性类1.方法

如果要访问类2的实例属性和方法,对应的语法形式如下:

类1.类2().属性类1.类2().方法

访问类2的类型属性和方法,对应的语法形式如下:

类1.类2.属性类1.类2.方法

如果要访问类3的实例属性和方法,对应的语法形式如下:

类1.类2.类3().属性类1.类2.类3().方法

如果要访问类3的类型属性和方法,对应的语法形式如下:

类1.类2.类3.属性类1.类2.类3.方法

【示例8-22】以下将定义一个多次嵌套的类NewClass,在此类中嵌套了StrClass类,和一个可以输出属性内容的方法。在StrClass类中又嵌套了Str1Class、Str2Class、Str3Class这3个类,它们都会返回一个字符串。代码如下:

在此代码中,在一个NewCllass类中有包含了1个类StrClass,在StrClass类中又包含了3个类,,分别为Str1Class、Str2Class、Str3Class。运行结果如下所示:

Swift2.0语言的可选链接

在类或者其他的类型中,声明的属性和变量/常量,都不可以为空。为了解决这一问题,Swift提出了可选类型。通过可选类型定义的元素可以为空或者是不为空,但是如何要使用这些可选类型的值又成为一大难题。Swift接着就提出了可选链接。可选链接可以判断请求或调用的目标(属性、方法、下标脚本等)是否为空。如果目标有值,那么调用就会成功;相反,则返回空(nil)。对于多次请求或调用的可以被链接在一起形成一个链条。Swift中的可选链接和Objective-C中的消息为空类似,但是Swift可以使用在任意的类型中使用,并且失败与否可以被检测到。以下将详细讲解可选链接的内容。

Swift2.0语言的可选链接的实现方式

可选链接其实就是使用“?”问号操作符对可选类型实现的一种运算。开发者可以在想要调用的属性、下标脚本和方法的可选值后面添加一个“?”问号来进行可选链接的定义。以下就是对于这些可选链接的定义形式:

对象可选链接的调用形式如下:

对象名.可选链接

【示例8-23】以下将判断值是否存在,其代码如下:

在此代码中,由于umberOfRooms的属性值不为空,所以会出现"目标有值",但是对于number属性来说,没有赋初值即number属性为nil,所以会出现"目标为空"运行结果如下所示:

目标有值目标为空

注意:在定属性、下标脚本以及方法定义为可选链接时,这些属性、下标脚本和方法都必须是可选类型,否则程序就会出现以下的错误。如以下的代码,是对属性进行的可选链接:

由于在此代码中对一个不是可选类型的属性进行了可选链接定义,导致程序出现了以下的错误:

Operand of postfix ‘?’ should have optional type; type is ‘Int’Swift2.0语言通过可选链接调用属性、下标脚本、方法

开发者可以使用可选链接的可选值来调用属性、下标脚本和方法,并检查这些内容调用是否成功。以下就是通过可选链接调用属性、下标脚本、方法的详细讲解。

1.通过可选链接调用属性

通过可选链接调用属性的语法形式如下:

可选链接.属性名

【示例8-24】以下将通过自判断可选链接来调用属性值,并获取这个属性值。代码如下:

由于john.residence是空,所以这个可选链接就会失败,但是不会出现错误,会返回一个nil。运行结果如下:

无法检索房间数

如果不想返回nil l,开发者需要将john.residence设置为不为空。如以下的代码,将john.residence设置为johnResidence。代码如下:

运行结果如下:

John在房子中有10个房间

2.通过可选链接调用下标脚本

通过可选链接调用下标脚本的语法形式如下:

可选链接.[下标]

【示例8-25】以下将通过自判断可选链接来调用下标脚本。代码如下:

运行结果如下所示:

无法检索房间数每一件事与每一个美丽景色,都有可能成为一生中的难忘。

Swift2.0语言教程之类的嵌套与可选链接

相关文章:

你感兴趣的文章:

标签云: