fis*_*her 5 optional-variables swift
我有一个案例,我想检查一个可选的我是否等于一个字符串.首先,我必须打开它以检查它是否存在,然后我想检查它是否等于另一个字符串.然而,这给我一个问题,我必须两次编写相同的代码.我给你举个例子:
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!")
}
Run Code Online (Sandbox Code Playgroud)
如你所见,我必须写两次else语句.一旦,如果名称存在且不是'John',那么该名称不存在的另一个时间.
我的问题是,如何以正确的方式做到这一点.
谢谢你的帮助!
Optional==在Swift标准库中为它定义了一个运算符:
func ==<T : Equatable>(lhs: T?, rhs: T?) -> Bool
Run Code Online (Sandbox Code Playgroud)
这意味着如果可选项包含一个等于的值,则可以比较两个选项.如果两个选项都是零,那么它们是相等的,如果两个选项包含相等的值,那么它们是相等的.
所以,如果你不关心是否person.name是nil或者不是,只是它是否含有"约翰"的值,你可以随便写if person.name == "John".
当"John" String不是一个时,它是如何工作的String??*因为Swift会隐式地将任何类型转换为可选的包装类型,如果这是一个参数需要的话.因为==比较选项的函数需要一个String?参数,"John"将被隐式转换为{Some "John"},允许==运算符在两个选项之间使用.
*实际上"John"也不String是,它是一个字符串文字,正在转换为String
| 归档时间: |
|
| 查看次数: |
3580 次 |
| 最近记录: |