gpt4 book ai didi

swift - 检查可选的 isEqualToString

转载 作者:搜寻专家 更新时间:2023-10-30 22:30:07 25 4
gpt4 key购买 nike

我有一个案例,我想检查我拥有的一个可选值是否等于一个字符串。首先我必须打开它来检查它是否存在,然后我想检查它是否等于另一个字符串。但是,这给了我一个问题,我必须两次编写相同的代码。我给你举个例子:

    var person : Person = Person()

if let name = person.name {
if name.isEqualToString("John") {
println("Hello, John!")
}
else {
println("Wait a minute, you're not John!")
}
else {
println("Wait a minute, you're not John!")
}

如您所见,我必须将 else 语句写两次。一次,如果该名称存在且不是“John”,另一次是该名称不存在。

我的问题是,如何以正确的方式做到这一点。

感谢您的帮助!

最佳答案

Optional 在 Swift 标准库中为其定义了一个 == 运算符:

func ==<T : Equatable>(lhs: T?, rhs: T?) -> Bool

这意味着如果可选值包含一个相等的值,您可以比较两个可选值。如果两个可选值都为 nil,则它们相等,如果两个可选值包含相等的值,则它们相等。

所以如果你不关心person.name是否为nil,只关心它是否包含“John”的值,你可以只写if person.name == "John".

当“John”是 String 而不是 String? 时,它是如何工作的?* 因为 Swift 会隐式地将任何类型转换为可选的包装类型,如果是的话一个论点需要什么。因此,因为用于比较可选值的 == 函数需要一个 String? 参数,“John” 将被隐式转换为 {Some "John"} ,允许在两个可选值之间使用 == 运算符。

* 其实 "John"也不是 String,它是一个正在转换为 String

的字符串文字

关于swift - 检查可选的 isEqualToString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27575753/

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