ςΩετ ࣮ࡍͷίʔυ protocol Pokemon { var name: String { get } var ability: Ability { get } var level: Int { get } var health: Int { get set } func displayStatus() func doAbility(with pokemon: T) } struct Pikachu: Pokemon { let name: String let ability: Ability let level: Int var health: Int func displayStatus() { // লུ... } func doAbility(with pokemon: T) where T : Pokemon { // লུ... } }