繁体   English   中英

可选:[String?]和[String]有什么区别?

[英]Optionals: What's the difference between [String?] and [String]?

本质上[String?][String]?区别[String]?
如果我定义了像var myStringArray:[String?]这样的数组,则不需要使用! 打开它,但是当我将数组定义为var myStringArray:[String]? 我必须使用强制打开它!
我在这里想念什么?

[String?]是可选字符串的数组。 数组不能为nil,但字符串可以。
[String]? 是一个可选的字符串数组。 数组可以为nil,但字符串不能。

对于[String?]您不必解开数组,而必须解开数组中的每个字符串。 对于[String]? 您需要在使用数组之前解开数组,而不需要解开数组中的字符串。

let arrayOfOptionalStrings: [String?] = [ "a", nil, "c" ]

for string in arrayOfOptionalStrings {
    if let string = string {
        print(string)
    }
}

var optionalArrayOfStrings: [String]? = [ "a", "b", "c" ]

if let array = optionalArrayOfStrings {
    for string in array {
        print(string)
    }
}

optionalArrayOfStrings = nil

[String?]可选字符串数组 数组本身不是可选的,但包含可选的。

[String]? String可选数组 数组本身是一个Optional,包含非Optional。

为[字符串]? 您正在创建一个可选的字符串数组,该数组是可选的。

对于[String?],您正在创建一个字符串可选数组,每个索引值都是一个可选字符串

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM