设为首页 加入收藏

TOP

可选类型(二)
2017-10-09 13:50:16 】 浏览:4847
Tags:类型
urn english

            default:

                return nil

            }

        }

        set{

            switch course{

            case "math":

                math = newValue!   //返回值可选类型!

            case "chinese":

                chinese = newValue!

            case "english":

                english = newValue!

            default:

                print("not found")

            }

        }

    }

}

var stu:Student? = Student()

//可选链调用下标引索不需要"."直接在?号后面加上[]即可

print(stu?["math"] as Any)

 

var arr:Array? = [1,2,3,4]

print(arr?[1] as Any)

 

//利用可选链赋值时, 要注意: 早些版本中不能利用可选链赋值

stu?.name = "hanjunqiang"

print(stu?.name as Any)

 

//利用可选链给下标赋值

stu?["chinese"] = 200.0

print(stu?["chinese"] as Any)

 

//判断赋值操作是否成功, 可选链的赋值操作也有返回值

//如果赋值成功会返回一个可选类型, 返回()?也就是Void? 代表成功, 返回nil代表失败

//let res1: = stu?.name = "xiaohange"

//let res1: ()? = stu?.name = "xiaohange"

//let res1: Void? = stu?.name = "xiaohange"

//print(res1)

 

stu = nil

let res: Void? = stu?.name = "HaRi"

print(res as Any)

 

 

 

/*

 多层可选链:

 单层: 可选值?.属性

 多层: 可选值?.属性.属性   或者    可选值?.属性.属性?.属性

 */

class A {

    var name:String = "han"

}

class B {

    var a1:A?

}

class C {

    var b1:B?

}

class D {

    var c1:C?

}

var a1 = A()

var b1 = B()

var c1 = C()

var d1 = D()

 

d1.c1 = c1

// 通过d直接给b赋值

// 由于D中的C是可选值, 所以需要在C后面加上?号

d1.c1?.b1?.a1 = a1

 

// 通过d直接获取a中的name

// 其实只需要在可选值后面加上?号即可, 如果可选值不存在, 那么后面的链接失效

print(d1.c1?.b1?.a1?.name as Any)

 

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇扩展 下一篇基本数据类型

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目