gpt4 book ai didi

swift - 一起使用 let 和 if - Swift Guided Tour Playground

转载 作者:行者123 更新时间:2023-11-30 10:23:10 25 4
gpt4 key购买 nike

我目前正在浏览 Swift 导游 Playground ,可以在苹果网站上找到。我对 C 和 C# 有一定了解,但每天主要使用 javascript。

我在 Playground 上偶然发现了这些线条:

var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName {
greeting = "Hello, \(name)"
}

在本例中,“greeting”变量将是“Hello, John Appleseed”,或者只是“Hello!”如果我将 optionName 设置为 nil。

文档指出:

You can use if and let together to work with values that might be missing. These values are represented as optionals. An optional value either contains a value or contains nil to indicate that the value is missing. Write a question mark (?) after the type of a value to mark the value as optional.

我想知道的是,这与我通常的做事方式有何不同:

var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if optionalName {
greeting = "Hello, \(optionalName)"
}

因为 Playground 上的结果实际上是相同的,所以我想了解其中的区别,以及为什么我应该使用 on 而不是 other。

谢谢!

最佳答案

name 是一个 String,但 optionalName 是一个 String?

字符串格式并不重要,因为该示例将接受任何类型。

但是,如果类型很重要,您的第二个示例就会失败。

例如,这不起作用:

var optionalName: String? = "John Appleseed"
var names :[String] = []

if optionalName {
names += name
}

(您无法将 String? 添加到 String 数组中。)

您可以将其替换为 if let 语法:

if let name = optionalName {
names += name
}

或者您可以将其替换为展开运算符:

if optionalName {
names += optionalName!
}

在您原来的示例中,如果您想避免 if let,更正确的用法是添加展开运算符:

if optionalName {
greeting = "Hello, \(optionalName!)"
}

关于swift - 一起使用 let 和 if - Swift Guided Tour Playground,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24830527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com