3 回答

TA貢獻1906條經驗 獲得超10個贊
您可以使用“模式匹配”運算符~=:
if 200 ... 299 ~= statusCode {
print("success")
}
或帶有表達式模式的切換語句(內部使用模式匹配運算符):
switch statusCode {
case 200 ... 299:
print("success")
default:
print("failure")
}
請注意,它..<表示忽略上限值的范圍,因此您可能需要 200 ... 299或200 ..< 300。
附加信息:在優化打開的情況下,在Xcode 6.3中編譯以上代碼時,進行測試
if 200 ... 299 ~= statusCode
實際上根本不產生任何函數調用,只有三個匯編指令:
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開始,這可以寫成
if case 200 ... 299 = statusCode {
print("success")
}
對if語句使用新引入的模式匹配。

TA貢獻1824條經驗 獲得超8個贊
這是一個舊線程,但在我看來,我們對此考慮過度。在我看來,最好的答案就是
if statusCode >= 200 && statusCode <= 299
沒有啦
if 200 > statusCode > 299
我知道的其他形式,以及其他建議的解決方案都在進行函數調用,這將變得更慢且更難以閱讀。模式匹配方法是一個有用的技巧,但似乎不適合解決此問題
- 3 回答
- 0 關注
- 583 瀏覽
添加回答
舉報