我可以在Swift的guard语句中使用范围运算符吗?

Kei*_*out 6 swift

我正试图找出另一种方法来做这样的事情,使用范围运算符.

guard let statusCode = (response as? HTTPURLResponse)?.statusCode, statusCode >= 200 && statusCode <= 299 else {return}
Run Code Online (Sandbox Code Playgroud)

也许是这样的:

guard let statusCode = (response as? HTTPURLResponse)?.statusCode where (200...299).contains(statusCode) else {return}
Run Code Online (Sandbox Code Playgroud)

要么

guard let statusCode = (response as? HTTPURLResponse)?.statusCode, statusCode case 200...299 else {return}
Run Code Online (Sandbox Code Playgroud)

这在Swift中可能吗?

OOP*_*Per 5

随你心意:

guard
    let statusCode = (response as? HTTPURLResponse)?.statusCode,
    (200...299).contains(statusCode) else {return}
Run Code Online (Sandbox Code Playgroud)

要么:

guard
    let statusCode = (response as? HTTPURLResponse)?.statusCode,
    case 200...299 = statusCode else {return}
Run Code Online (Sandbox Code Playgroud)

要么:

guard
    let statusCode = (response as? HTTPURLResponse)?.statusCode,
    200...299 ~= statusCode else {return}
Run Code Online (Sandbox Code Playgroud)

  • @KeithGrout,我不知道这是否是一个受欢迎的惯例.但是在关键字"guard"之后放置换行符会清楚表明它有多个条件. (2认同)