当前位置: 首页 > 面试题库 >

为什么我要使用if和let在一起,而不是仅仅检查原始变量是否为nil?(迅速)

乐健
2023-03-14
问题内容

在“
Swift编程语言”中。
在书中,Apple提到在访问可选变量时同时使用iflet

本书提供以下代码作为示例:

var optionalString: String? = "Hello"
optionalString == nil

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

使用if let name = optionalName而不是if optionalName != nil(并且始终将其称为optionalName)有什么好处?有什么区别,还是仅仅是约定?


问题答案:

因为它也解开了可选值,所以这段代码:

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

等效于:

if optionalName != nil {
    let name:String = optionalName!
    greeting = "Hello, \(name)"
}

这种语言糖在Swift中被称为Optional
Binding

可选类型

在Swift TT?不是相同的类型中,但是T?可以使用!postfix运算符轻松实现可选类型的基础值,例如:

let name:String = optionalName!

现在可以在String期望a的地方使用它,例如:

func greet(name:String) -> String {
    return "Hello, \(name)"
}

greet(name)

尽管这样做很安全,但是Swift确实允许您隐式转换为可选类型:

let name = "World"
let optionalName: String? = name

func greet(optionalName:String?) -> String? {
    if optionalName != nil {
        return "Hello, \(optionalName)"
    }
    return nil
}

//Can call with either String or String?
greet(optionalName)
greet(name)


 类似资料:
  • 根据文件,https://github.com/gulpjs/gulp/blob/master/docs/getting-started.md $npm安装--节省开发成本 到目前为止,我使用的所有npm模块都使用

  • 问题内容: 有什么最短的方法吗? 如果我是正确的,应该用? 有可能,并且在一行中写(也许是数组?)而不重复? 问题答案: 如果要测试变量是否 确实 是,请使用标识运算符: 如果要检查是否未设置变量: 或者,如果变量不为空,则为空字符串,零,..: 如果要测试变量是否不是空字符串,也将足够:

  • 我想检查变量是否为空: 此代码基于:https://www.thomasmaurer.ch/2010/07/powershell-check-variable-for-null/,但这不起作用。 我该怎么解决这个问题? ps。堆栈中有东西

  • 假设我在程序中有一段代码: 有人建议我在调用消息之前检查消息的空值。getUserId()。 检查null有两种方法:第一种: 第二种方式: 我的问题是: 哪种方式对null检查更好?返回还是抛出异常? 为什么我们在这里需要空检查?如果我们不这样做,那么无论如何都会抛出。

  • 我正在学习亚当·简斯的合唱团教程。 数据是用这个代码块加载的 而准备就绪被定义为 我把这个序列理解为 首先-创建一个名为promises的数组,其中第一项是来自此链接的已解析json,第二项是来自该文件的id/值对的映射 第二,获取promise变量中的所有promise,如果成功,则触发函数ready,如果失败,则不执行任何操作 如果这是对的,那么相对于这样的东西有什么优势呢?我用伪代码写这个因