You can use the "pattern-match" operator ~=
:
if 200 ... 299 ~= statusCode {
print("success")
}
Or a switch-statement with an expression pattern (which uses the pattern-match
operator internally):
switch statusCode {
case 200 ... 299:
print("success")
default:
print("failure")
}
Note that ..<
denotes a range that omits the upper value, so you probably want
200 ... 299
or 200 ..< 300
.
Additional information: When the above code is compiled in Xcode 6.3 with
optimizations switch on, then for the test
if 200 ... 299 ~= statusCode
actually no function call is generated at all, only three assembly instruction:
addq $-200, %rdi
cmpq $99, %rdi
ja LBB0_1
this is exactly the same assembly code that is generated for
if statusCode >= 200 && statusCode <= 299
You can verify that with
xcrun -sdk macosx swiftc -O -emit-assembly main.swift
As of Swift 2, this can be written as
if case 200 ... 299 = statusCode {
print("success")
}
using the newly introduced pattern-matching for if-statements.
See also Swift 2 - Pattern matching in "if".
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…