加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – 检查可选的isEqualToString

发布时间:2020-12-14 02:26:05 所属栏目:百科 来源:网络整理
导读:我有一个案例,我想检查一个可选的我是否等于一个字符串. 首先,我必须打开它以检查它是否存在,然后我想检查它是否等于另一个字符串.然而,这给我一个问题,我必须两次编写相同的代码.我给你举个例子: var person : Person = Person() if let name = person.nam
我有一个案例,我想检查一个可选的我是否等于一个字符串.
首先,我必须打开它以检查它是否存在,然后我想检查它是否等于另一个字符串.然而,这给我一个问题,我必须两次编写相同的代码.我给你举个例子:
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

这意味着如果可选项包含一个等于的值,则可以比较两个选项.如果两个选项都是零,那么它们是相等的,如果两个选项包含相等的值,那么它们是相等的.

因此,如果你不关心person.name是否为nil,只要它是否包含值“John”,你可以写如果person.name ==“John”.

当“John”是String而不是String时,它是如何工作的?*因为Swift将隐式地将任何类型转换为可选的包装类型,如果这是一个参数需要的话.因为比较选项的==函数需要一个字符串?参数,“John”将被隐式转换为{Some“John”},允许使用两个选项之间的==运算符.

*实际上“John”也不是String,它是一个字符串文字,它被转换为String

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读