Mükemmel blog gönderisini buradan takip edin: https://appventure.me/2015/08/20/swift-pattern-matching-in-detail/#sec-3-7 Özel desen eşleştirmeyi denedim.Özel desen uyumu Swift içinde 2.2 beklendiği gibi çalışmıyor
enum LineType : String {
case Event = "event:"
case Data = "data:"
}
Sonraki bir dize LineType
biri ya da diğer değerle başlıyorsa anlatan yapabilen bir String
uzantısı:: Sonra
extension String {
func isOfType(type: LineType) -> Bool {
return self.hasPrefix(type.rawValue)
}
}
özel deseni en bir enum
dizeleri iki tür temsil tanımlayalım eşleştirme işlevi, bir dizenin verilen türde olup olmadığını denetleme:
func ~= (pattern: LineType, value: String) -> Bool {
return value.isOfType(pattern)
}
Son olarak, bu örnekle test edelim le:
let testLine = "event:yada-yada-yada"
switch testLine {
case _ where testLine.characters.count == 0:
print("Empty")
case LineType.Event: // <--- Causes the error Enum case 'Event' is not a member of type 'String'
print("Event")
case LineType.Data: // <--- Causes the error Enum case 'Data' is not a member of type 'String'
print("Data")
default:
print("Unknown Type")
}
Yani birisi ... Yanlış ne önceden
Teşekkür söyle eğer. Hala bunu yeniden düzenlemek için denemek
Bana bir hata gibi görünüyor, desen bir numaralandırma türü ise derleme başarısız olur. –
@MartinR case {LineType.Event}(): print ("Event") sorunu çözmek ... veya daha iyi sabitleri tanımlamak e = LineType.Event; ... case e: ... – user3441734