一尘不染

Swift 2:“ Bool”类型的表达式模式不能与“ Int”类型的值匹配

swift

我正在将此问题设置为“ FizzBu​​zz”,而我的switch语句给了我一些问题,这是我的代码:

func fizzBuzz(n: Int) -> String {   
    switch n {
    case n % 3 == 0: print("Fizz")
    case n % 5 == 0: print("Buzz")
    case n % 15 == 0:print("FizzBuzz")
    }
    return "\(n)"
}

如果您可以为我提供指针/提示,而不是给我正确的代码,那将是一件好事:D我宁愿自己解决它,但一些提示也可以使我摆脱困境。


阅读 203

收藏
2020-07-07

共1个答案

一尘不染

您可以case let where在单独检查它们之前使用并检查两者是否匹配:

func fizzBuzz(n: Int) -> String {
    let result: String
    switch n {
    case let n where n % 3 == 0 && n % 5 == 0:
        result = "FizzBuzz"
    case let n where n % 3 == 0:
        result = "Fizz"
    case let n where n % 5 == 0:
        result = "Buzz"
    default:
        result = "none"
    }
    print("n:", n, "result:", result)
    return result
}
2020-07-07