Xcode 快速包装

Xcode 快速包装,xcode,swift,Xcode,Swift,我对快速包装和打开有点困惑!假设这是我的代码: var name:String? = "FirstName" print(name) 打印功能是否自动打开可选名称?所以我不需要说 打印(名称!)以打开名称? 我想我想理解的是,这两个变量在解包可选变量时是等价的 print(“name”)就像说print(“name”!) 我还有一个问题是关于零的。 正在说var name:String?=“FirstName”相当于说var name:String?=无。赋值为nil值是否封装了一个变量?当某

我对快速包装和打开有点困惑!假设这是我的代码:

var name:String? = "FirstName"
print(name)
打印功能是否自动打开可选名称?所以我不需要说
打印(名称!)
以打开名称? 我想我想理解的是,这两个变量在解包可选变量时是等价的

print(“name”)
就像说
print(“name”!)

我还有一个问题是关于零的。
正在说
var name:String?=“FirstName”
相当于说
var name:String?=无
。赋值为nil值是否封装了一个变量?

当某个值可以为nil时,它可以是两个值,可以是某个值(给定类型的值),也可以是nil

声明如下:

var name: String?
意味着name变量可以为nil,如果为其指定了值,则需要将其展开才能使用它

name = "FirstName"
现在已经定义了name变量,但是您仍然需要确保在某些情况下它不是nil,但是在其他情况下(例如当字符串不需要不是nil时)使用可选链接

可选链接允许在语句中连续计算nil或某些值,只要不要求它不是nil。如果是这种情况,则需要将其展开:

let someThingRequiresAString = NeedAStringInitializer(string: name!)
在上面的语句中,如果name为nil,程序将崩溃,有几种方法可以处理类似的问题,下面是一个快速示例:

if name != nil {

let someThingRequiresAString = NeedAStringInitializers(string: name!)
}
在这里,您知道您可以这样做b/c名称已被评估为不为零。还可以使用nil合并运算符或保护语句。下面是Swift中零合并的一个快速示例:

let someThingRequiresAString = NeedAStringInit(string: name ?? "New Name")

可选的范例非常强大且富有表现力。

当某物可以为零时,它可以是两个东西,它可以是一些(给定类型的值),也可以是零

声明如下:

var name: String?
意味着name变量可以为nil,如果为其指定了值,则需要将其展开才能使用它

name = "FirstName"
现在已经定义了name变量,但是您仍然需要确保在某些情况下它不是nil,但是在其他情况下(例如当字符串不需要不是nil时)使用可选链接

可选链接允许在语句中连续计算nil或某些值,只要不要求它不是nil。如果是这种情况,则需要将其展开:

let someThingRequiresAString = NeedAStringInitializer(string: name!)
在上面的语句中,如果name为nil,程序将崩溃,有几种方法可以处理类似的问题,下面是一个快速示例:

if name != nil {

let someThingRequiresAString = NeedAStringInitializers(string: name!)
}
在这里,您知道您可以这样做b/c名称已被评估为不为零。还可以使用nil合并运算符或保护语句。下面是Swift中零合并的一个快速示例:

let someThingRequiresAString = NeedAStringInit(string: name ?? "New Name")

可选的范例非常强大且富有表现力。

可能重复的。您在操场上尝试过这些东西吗?发现这样的事情很好。也就是说,不。
print()
不会打开东西,因为如果你在操场上试用,它会打印出
可选(“名字”)
可能的副本。你在操场上试用过这些东西吗?发现这样的事情很好。也就是说,不。
print()
不会打开东西,因为如果你在操场上试用,它会打印出
可选(“名字”)