- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个案例,我想检查我拥有的一个可选值是否等于一个字符串。首先我必须打开它来检查它是否存在,然后我想检查它是否等于另一个字符串。但是,这给了我一个问题,我必须两次编写相同的代码。我给你举个例子:
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/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!