Swift

[Swift]enumにextensionを生やす

rawVauleのあるenumに対してextensionを生やす場合はRawRepresentableに対してextensionを行えばOK

enumにメソッドを生やす

enum Animal: String {
  case fox
}

extension RawRepresentable {
  func printRawValue() {
    print(rawValue)
  }
}

Animal.fox.printRawValue() //fox

Stringのenumにメソッドを生やす

RawValueに型情報が入っているのでそれを見る

enum Animal: String {
  case fox
}

extension RawRepresentable where Self.RawValue == String {
  func printRawValue() {
    print(rawValue)
  }
}

Animal.fox.printRawValue()