首页 > 解决方案 > "Self" working in switch statement, but not If statement in Swift

问题描述

this code works

extension Character {
    func isVowel() -> Bool {
        switch self {
        case "a", "e", "i", "o", "u", "A", "E", "I", "O", "U":
            return true
        default:
            return false
        }
    }
}

but when I use an if statement it gives "cannot convert type "String" to Bool

extension Character {

    func isVowel() -> Bool {
        if "a", "e", "i", "o", "u" {
            return true
        } else {
            return false
        }
    }

}//does not work

I have tried adding "self" and self.asciiValue

how to properly convert the switch statement into if statement? sorry, still a beginner lol

标签: swift

解决方案


if 语句应如下所示:

if self == "a" || self == "e" || self == "i" || self == "o" || self == "u" {
  return true
} else {
  return false
}

另一种方法是:

func isVowel() -> Bool {
  return ["a", "e", "i", "o", "u"].contains(self)

  // or even shorter (by Leo Dabus):
  return "aeiou".contains(self)
}

推荐阅读