3 回答

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊
您可以使用“模式匹配”運(yùn)算符~=:
if 200 ... 299 ~= statusCode {
print("success")
}
或帶有表達(dá)式模式的切換語(yǔ)句(內(nèi)部使用模式匹配運(yùn)算符):
switch statusCode {
case 200 ... 299:
print("success")
default:
print("failure")
}
請(qǐng)注意,它..<表示忽略上限值的范圍,因此您可能需要 200 ... 299或200 ..< 300。
附加信息:在優(yōu)化打開(kāi)的情況下,在Xcode 6.3中編譯以上代碼時(shí),進(jìn)行測(cè)試
if 200 ... 299 ~= statusCode
實(shí)際上根本不產(chǎn)生任何函數(shù)調(diào)用,只有三個(gè)匯編指令:
addq $-200, %rdi
cmpq $99, %rdi
ja LBB0_1
這是與生成的完全相同的匯編代碼
if statusCode >= 200 && statusCode <= 299
您可以使用
xcrun -sdk macosx swiftc -O -emit-assembly main.swift
從Swift 2開(kāi)始,這可以寫(xiě)成
if case 200 ... 299 = statusCode {
print("success")
}
對(duì)if語(yǔ)句使用新引入的模式匹配。

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊
這個(gè)版本似乎比模式匹配更具可讀性:
if (200 ... 299).contains(statusCode) {
print("Success")
}

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
這是一個(gè)舊線程,但在我看來(lái),我們對(duì)此考慮過(guò)度。在我看來(lái),最好的答案就是
if statusCode >= 200 && statusCode <= 299
沒(méi)有啦
if 200 > statusCode > 299
我知道的其他形式,以及其他建議的解決方案都在進(jìn)行函數(shù)調(diào)用,這將變得更慢且更難以閱讀。模式匹配方法是一個(gè)有用的技巧,但似乎不適合解決此問(wèn)題
- 3 回答
- 0 關(guān)注
- 598 瀏覽
添加回答
舉報(bào)