我想知道Equal(==)和相同(===)表达式之间的区别。也是为什么我们使用模式匹配(〜=)表达式。我在哪里可以使用这些表达式。任何人都可以解释。提前谢谢。
我的示例代码是:
var sample1 = "Steve jobs"
var sample2 = "Steve jobs"
sample1 === sample2 ? println("Its Equal"):println("Not equal") //result "Not equal"
var sample3 = "Steve jobs"
var sample4 = "Steve jobs"
sample3 == sample4 ? println("Its Equal"):println("Not equal")//result "Its Equal"
总是欢迎使用其他具有良好示例的二进制表达式。我认为在目标c中不存在模式匹配。
答案 0 :(得分:1)
答案 1 :(得分:1)
显然,sample1
和sample2
是两个不同的字符串实例,因此sample1 === sample2
会产生false
(因为它们不是同一个对象)
另一方面,sample3和sample4是EQUAL STRINGS,因此sample3 == sample4
产生true
(因为这两个实例代表相同的字符串)
答案 2 :(得分:1)
首先是"不等于"因为sample1和sample2具有相同的内容,但是是两个不同的对象。
第二是"它的平等"因为samle3和sample4具有相同的内容。
==
代表"按价值比较"或比较内容
===
代表"通过引用比较"或确保两个引用指向同一个对象。
答案 3 :(得分:1)
您编写的示例甚至无法编译
这是因为===
仅为对象类型定义,但Swift String
是值类型。
通常,这意味着两个对象intances是同一个实例。而==
检查内容是否相等。
您只能将===
用于对象类型为NSString
的实例:
var sample1: NSString = "string1"
var sample2: NSString = "string1"
sample1 === sample2 //false
模式匹配表达式~=
由switch - case
控制语句使用。 switch(value)
定义了一个值,每个case pattern:
定义了一个匹配的模式。每个~=
调用case
函数来决定是否应该执行case
语句。