Bu post numaralı kitabı okudum ama bu yazının bir anahtar deyimi kullandığını ve desen eşleştiğinde bir şey yapması gerektiğini (true değerini döndürmesi) gerektiğini unutmayın. Öte yandan, eğer desen eşleşirse ve bir if-case ifadesi kullanırsa ben hiçbir şey yapmak istemiyorum.Enum bir desenle eşleşmiyorsa nasıl kontrol edilir?
enum MyEnum {
case a
case b(Int)
case c
case d
}
İşte bunun bir örneği var: myEnum
.b
değilse
let myEnum: MyEnum = .a
Şimdi bir şey yapmak istiyorum
Bu enum var.
if case .b(_) = myEnum {
} else {
// do my thing here
}
Ama gerçekten nefret:
if myEnum != .b { // compiler error
// do my thing here
}
yüzden desen maçı bunun için eğer durum deyimini kullanmanız gerekir: .b
ilişkili bir değere sahip olduğu için, ben sadece bir if deyimi çeki kullanamazsınız boş if maddenin kullanılması. Bu sadece bana yanlı gözüküyor. Bunu yapmayi denedim:
if case .b(_) != myEnum { // compiler error!
// do my thing here
}
Bunu, boş bir deyim kullanmaktan başka yapmak için daha iyi bir yolu var mı?
Modelin eşleşip eşleşmediğine bakılmaksızın çalışması gereken bir kodum hala var, bu nedenle guard
ifadesi çalışmayacak.
Üzgünüz, ama yeterli içerik sağlamadığımı fark ettim. Kodum bundan sonra geri dönemez. Desenin eşleşip eşleşmediği, yürütülmesi gereken bazı kodlar vardır. Yine de, bir hak hak ediyorsun! – Sweeper
@Sweeper evet, cevabı gönderdikten sonra bunun hakkında bir not ekledim, bu yüzden bu konuda bir not ekledim :) – Cristik
neden enum (anahtar) durumunu döndüren bir işlev veya hesaplanmış özellik kullanmayın. – Dasem