Swift 切换字符串返回

ran*_*nny -3 return switch-statement swift

你好,我有一个简单的 switch case 语句,它有一个错误“在预期返回‘字符串’的函数中缺少返回”

我只能看到我正在归还所有东西。没有 if 语句,所以它不能是一个缺失的返回。

enum Sign { case rock, paper, scissors }

func detectWinner(player: Sign, bot: Sign) -> String{
    switch player{
    case .rock:
        switch(bot){
        case .rock: return "You Tied"
        case .paper: return "You Lost"
        case .scissors: return "You Won"
        }
    case .paper:
        switch(bot){
            case .rock: return "You Won"
            case .paper: return "You Tied"
            case .scissors: return "You Lost"
        }
    case .scissors:
        switch(bot){
            case .rock: return "You Lost"
            case .paper: return "You Won"
            case .scissors: return "You Tied"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Dun*_*n C 8

正如其他人所说,您的代码应该编译,因为您详尽地处理了所有 switch 语句。尝试清洁和重建。

顺便说一句,这似乎很好地使用了带有元组的 switch 语句:

enum Sign { case rock, paper, scissors }

func detectWinner(player: Sign, bot: Sign) -> String{
    switch (player, bot){
    case (.rock, .rock): return "You Tied"
    case (.rock, .paper): return "You Lost"
    case (.rock, .scissors): return "You Won"

    case (.paper, .rock): return "You Won"
    case (.paper, .paper): return "You Tied"
    case (.paper, .scissors): return "You Lost"

    case (.scissors, .rock): return "You Lost"
    case (.scissors, .paper): return "You Won"
    case (.scissors, .scissors): return "You Tied"
    }
}
Run Code Online (Sandbox Code Playgroud)

这似乎比嵌套的 switch 语句更易于阅读和维护。(它是为我打造的,至少在游乐场)