swift-基础06-元组和Optionals(可选)

来源:互联网 发布:穿越火线抽奖软件 编辑:程序博客网 时间:2024/05/18 03:40

    元组(tuples)是把多个值组合成一个复合值。

    元组内的值可以使任意类型,并不要求是相同类型。

    比如(404, "Not Found"),这是一个描述 HTTP状态码(HTTP status code)的元组,

    Http 状态码是请求web服务器时返回的一个值。

    如果你请求的页面不存在,就会返回 404

    

    let http404Error = (404,"Not Found")

    

    (404, "Not Found") 是将一个 Int 类型值和一个 String类型值组合在一起

    表示 HTTP状态码的两个部分:数字和描述。

    它可以被描述为一个(IntString)类型的元组

    元组可以包含任何类型,类型的顺序也是随意的。

    比如,你可以创建 (Int, Int, Int)或者 (String, Bool)元组,或者其他任何你想要的元组。

    可以将一个元组的内容分解成单独的常量或变量,然后就可以正常访问了

    

    let (statusCode, statusMessage) = http404Error

    print(statusCode)

    print(statusMessage)

    

    如果你只需要一部分元组的值,忽略的部分用下划线来标记_

    let(theStatusCode,_) = http404Error

    print(theStatusCode)

    

    还可以通过索引访问元组中的各个元素,索引数字从0开始

    print("statusCode==\(http404Error.0)")

    

    还可以给元组的各个元素赋值 一下两种方式都一样

    let http200Status = (statusCode:200,description:"yes,it is ok")

    let http200Status = (statusCode:200,statusMessage:"yes,it is ok")

    print(http200Status)

    

    也可以用.元素名来访问这些元素

    print("http200Statusstatus==\(http200Status.statusCode)")

    

    元组作为函数的返回值时特别有用。

    一个试图访问网页的函数可能会返回一个(Int, String)元组来描述是否成功。

    和只能返回一个值比起来,返回一个包含两个不同类型值的元组让函数更有用。

    

    元组在临时组织值的时候很有用,但是并不适合创建复杂的数据结构。

    如果你的数据结构并不是临时使用,请使用类或者结构体

   

    一个变量在未初始化之前是不能使用的,除非使用可空类型

    使用可选(optionals)来处理可能缺失值的情况。

    一个可选(optionals)表示:

    有值,等于 x

    或者,没有值

    

    C Objective-C中没有可选这个概念。

    Objective-C 中的一个特性与可选比较类似:一个方法要么返回一个对象,要么返回 nil

    nil 表示缺少一个合法的对象

    

    例如:Swift String 类型有一个方法 toInt ,用于将一个 String 值转换成一个 Int 值。

    然而,不是所有的字符串都可以转换成一个整数。

    字符串 "123"可以被转换成数字123,但是"hello, world"是不行的。

    

    下面的例子调用 Int()方法试图将一个 String转换成 Int

    

    let possibleNumber:String = "123"

    let possibleNumber:String ="hello"

    

    只有可空类型才能和nil进行比较,否则会报错

    如下,会报错

    if possibleNumber == nil {

    

    }


    let convertedNumber = Int(possibleNumber)

    let convertedNumber :Int? =Int(possibleNumber)

    但是下面的不会报错

    if convertedNumber == nil {

    

    

    }

    

    print(convertedNumber)

    

   

    当是"123"时打印的是Optional(123) 当为"hello"nil

    

    因为Int()方法可能失败,所以它返回一个可选的(optionalInt,而不是一个Int

    一个可选的 Int表示为: Int?

    问号表示是可选的,也就是说可能包含 Int值也可能不包含。

    只能是 Int或者什么都没有。不能包含其他值,比如 Bool值或者 String

    

    可空类型不是一种类型,他是普通类型(非可空类型)加上nil的结合。

    

0 0
原创粉丝点击