我這是我的代碼,它是工作如何檢查是否有3個字符串在Swift中相等?
if (v1 == v2) && (v2 == v3) {
println("3 strings are equal")
}
是否有其他更迅捷的方式來做到這一點?
我的實現看起來像C代碼:-)
我這是我的代碼,它是工作如何檢查是否有3個字符串在Swift中相等?
if (v1 == v2) && (v2 == v3) {
println("3 strings are equal")
}
是否有其他更迅捷的方式來做到這一點?
我的實現看起來像C代碼:-)
我不這麼認爲。這就像它變得簡單一樣。 (和C和ObjC的改善,太 - 你可以使用==
運營商,而不是調用strcmp
或isEqual:
。)
如果你真的想想怎麼樣吧,如果你創建了一個你也許可以寫v1 == v2 == v3
自定義==
操作符重載。 (這是留給讀者的一個練習。)但這可能不值得。
您可以使用擴展String類是這樣的:
extension String {
func allEquals (s1: String, s2: String) {
(this == s1) && (s1 == s2)
}
}
我沒編譯它,但它應該工作;)
如果你想成爲真正SWIFTY,你可以檢查字符串數組是所有平等的這樣的(你可以包裝在一個延伸,當然):
var array = ["test", "test", "test"]
var allEqual = array.reduce(true, combine: { (accum: Bool, s: String) -> Bool in
accum && s == array[0]
})
我可能不會調用它非常優雅或超高效......但它確實有效。
你可以做這樣的一些很酷的東西:
extension Array {
func allEqual(isEqual: (T, T) -> Bool) -> Bool {
if self.count < 2 {
return true
}
for x in self {
if !isEqual(x, self.first!) {
return false
}
}
return true
}
}
,然後調用它像這樣:
["X", "Y", "Z"].allEqual(==) // false
["X", "X", "X"].allEqual(==) // true
let one = "1"
var ONE = "1"
var One = "1"
[one, ONE, One].allEqual(==) // true
沒有,在C它看起來像'如果(STRCMP(V1,V2)= = 0 ...':) – 2014-12-01 15:34:55
我的意思是&& – WebOrCode 2014-12-01 15:39:37
'&&'是一個有效的Swift運算符,具有「短路」的優點。 – 2014-12-01 15:46:07