import Foundation protocol Animal { var binomen:String { get } init() } struct Cat: Animal { let binomen = "Felis silvestris catus" let theYoung = "kitten" } struct Dog: Animal { let binomen = "Canis lupus familiaris" let theYoung = "puppy" } var pet:Animal = (arc4random() & 1 == 1) ? Cat() : Dog() Q0: このコードは動きますか? A0: 動く A1: (type mismatchで動かない) 正解はA0、きちんと動きます。PlaygroundsなりREPLで確認してみてください。で、本題です。