大家都知道你可以使用==运算符来比较事物。在Swift中比较字符串对象
if (stringValue1 == stringValue2)
如果你这样做在Objective-C程序将检查这些对象是相同的,如果没有这两个字符串确实包含相同的文字。如果您想比较文本值,则需要使用compare-Method。
据我了解,Swift中的相同代码不会比较文本值。那很好。很多编程语言都是这样工作的。但是,我需要做什么来检查这两个值是否指向同一个对象?
大家都知道你可以使用==运算符来比较事物。在Swift中比较字符串对象
if (stringValue1 == stringValue2)
如果你这样做在Objective-C程序将检查这些对象是相同的,如果没有这两个字符串确实包含相同的文字。如果您想比较文本值,则需要使用compare-Method。
据我了解,Swift中的相同代码不会比较文本值。那很好。很多编程语言都是这样工作的。但是,我需要做什么来检查这两个值是否指向同一个对象?
对于类类型的对象,您可以通过===
运算符来检查两个对象是否引用同一个实例。但是,你特别要求字符串。快速字符串不是班级类型 - 它们是值。 ===
运算符将不会为它们工作 - 就像它不适用于整数一样。所以你的问题的答案 - 如何检查两个字符串是否是相同的实例 - 在Swift中是:这是不可能的。在Swift中使用字符串时,只能使用正常运算符,如==
等。
你不能像字符串是值类型,而不是对象类型。 ===
运算符仅适用于对象类型(的AnyObject
),但String
的类型为Any
。
6> "abc" === "abc"
repl.swift:6:1: error: type 'String' does not conform to protocol 'AnyObject'
"abc" === "abc"
^
Swift.lhs:1:5: note: in initialization of parameter 'lhs'
let lhs: AnyObject?
^
6> var str : String = "abc"
str: String = "abc"
7> str === str
repl.swift:7:1: error: type 'String' does not conform to protocol 'AnyObject'
str === str
^
Swift.lhs:1:5: note: in initialization of parameter 'lhs'
let lhs: AnyObject?
^
呃,没错!我是一个说===的白痴。删除那个不好的答案。 – 2014-12-06 17:00:50