Я пытался смешать пользовательские связанные значения со строкой в Enum, но не смог этого сделать.Когда я пытаюсь применить регистр переключения к перечислению, я получаю эту ошибку: шаблон выражения типа 'Fruit' не может соответствовать значениям типа 'Fruit'
Это потому, что строки являются типами значений и, следовательно, Swift можетсравнить их, но не пользовательский объект класса Fruit, который является ссылочным типом?
class Fruit{
let name: String?
let energyKcl: Double?
let costPerKg: Double?
init(name:String, energyKcl: Double, costPerKg: Double) {
self.name = name
self.energyKcl = energyKcl
self.costPerKg = costPerKg
}
}
enum Calorie {
case fruit(Fruit)
case chocolate (String)
case dairy(String)
case Nuts(String)
}
let banana = Fruit.init(name: "Banana", energyKcl: 100, costPerKg: 10)
func prepareBreakfast(calories: Calorie){
switch calories {
case .chocolate("Dark"):
print("Dark")
case .chocolate("White"):
print("White")
case .fruit(banana): //Error: Expression pattern of type 'Fruit' cannot match values of type 'Fruit'
print("banana")
default:
print ("Not available")
}
}
prepareBreakfast(calories: .fruit(banana))