不管数组还是集合,判断他们的内容是否相等的时候,要特别小心,不能凭空想象,随意使用以下的运算符:【==】、【===】、【!=】、【!==】,详细资料请查官方文档。
集合类型判断内容是否相等: issetequal
issetequal(a, b) -> Bool
Determine whether a and b have the same elements. Equivalent to a ⊆ b && b ⊆ a but more efficient when possible.
之前自己遇到的错误,我是想判断他们的内容是否相等,也就是数学意义上的集合相等,然后程序出现很奇怪的结果。
Set(["yx", "yc"]) !== Set(["yx", "yc"]) #true
Set(["yx", "yc"]) == Set(["yx", "yc"]) #true
Set(["yx", "yc"]) != Set(["yx", "yc"]) #false
!(Set(["yx", "yc"]) == Set(["yx", "yc"])) #false
issetequal(Set(["yx", "yc"]),Set(["yc", "yx"])) #true
issetequal(Set(["yx", "yc"]),Set(["yx", "yc"])) #true
["yx", "yc"] !== ["yx", "yc"] #true
["yx", "yc"] == ["yx", "yc"] #true
["yx", "yc"] != ["yx", "yc"] #false
!(["yx", "yc"] == ["yx", "yc"]) #false
但是给定两个数组[1,2,3]和[3,2,1],如果你用issetequal判断,从集合的数学意义上来讲他们是相等的,但是,直观上来讲,这两个数组是不想等的,因为他的顺序不一样。
all([1,2,3] .== [1,3,2]) #false 判断对应位置的item是否相等
issetequal([1,2,3] , [1,3,2]) #true
总结: 逻辑运算符,需要熟练掌握和区分,在写代码的时候,切忌望文生义随便使用,不然将造成灾难性后果。
==,===,!=,!== 用法待续......
网友评论