Swift 2 guard anahtar kelime
Swift 2 tanıtır çeşitli veri yapılandırılmış olduğundan emin olmak için kullanılabilecek guard
anahtar kelime, gitmek için hazır. Gördüğüm bir örnek this website submitTapped bir işlevi gösterir:
func submitTapped() {
guard username.text.characters.count > 0 else {
return
}
print("All good")
}
EÄŸer guard
kullanarak eski moda ÅŸekilde yapmak, if
bir durumu kullanarak daha farklı bir şey olup olmadığını merak ediyorum. Basit bir kontrol ile mümkün olmayan avantajlar veriyor mu?
CEVAP
this article okuma büyük faydalar kullanarak fark ettimGardiyan
Burada bir örnek ile koruma kullanımını karşılaştırmak:
Bu koruma olmadan parçasıdır:
func fooBinding(x: Int?) {
if let x = x where x > 0 {
// Do stuff with x
x.description
}
// Value requirements not met, do something
}
Burada tüm koşullar içinde istediğiniz kodu koyuyorsun
Hemen bu sorun olmayabilir, ama ne kadar kafa karıştırıcı eğer karşılanması gereken çeşitli koşullar ile iç içe olsaydı olabilirdi ifadeleri çalıştırmadan önce tahmin edersiniz
Bu kadar temiz bir şekilde kontrolleri her önce, ve eğer bir araya geldi değilse çıkmak için. Bu ne durumları bu işlev çıkış yapacak kolay anlaşılmasını sağlar.
Ama şimdi bekçi kullanabiliriz ve bazı sorunları çözmek için mümkün olduğunu görebiliriz:
func fooGuard(x: Int?) {
guard let x = x where x > 0 else {
// Value requirements not met, do something
return
}
// Do stuff with x
x.description
}
- Yok kimse istemiyor musun durumu kontrol. Bu yine bir iddia etmeye benzer. Eğer bu koşul yerine değilse, gardiyanın başka deyimi işlev dışı tatili çalıştırın.
- Eğer durum geçerse, isteğe bağlı değişken burada otomatik olarak koruma kapsamında sizin için açtı. açıklama çağrıldı – bu durumda, fooGuard(_:) işlevi.
- Kötü durumlar için erken, işlevi daha okunabilir ve bakımı daha kolay hale denetleniyor
Bu aynı desen isteğe bağlı olmayan değerler için de geçerlidir:
func fooNonOptionalGood(x: Int) {
guard x > 0 else {
// Value requirements not met, do something
return
}
// Do stuff with x
}
func fooNonOptionalBad(x: Int) {
if x <= 0 {
// Value requirements not met, do something
return
}
// Do stuff with x
}
Eğer hala herhangi bir sorunuz varsa makalenin tamamını okuyabilirsiniz: Swift guard statement.
Toparlıyor
Ve son olarak, okuma ve eğer kullanırsanız herhangi bir optionals açmak koruyan buldum testi
bu açılmamış değerleri size geri kalanı kullanmak için etrafında kalmak kod bloğu
.
guard let unwrappedName = userName else {
return
}
print("Your username is \(unwrappedName)")
Burada açılmamış değeri sadece blok içinde kullanılabilir olacaktır
if let unwrappedName = userName {
print("Your username is \(unwrappedName)")
} else {
return
}
// this won't work – unwrappedName doesn't exist here!
print("Your username is \(unwrappedName)")
Verim anahtar kelime Python ne yapar?...
'' JavaScript anahtar kelime...
Javascript "izin" vs " a...
Nasıl&; quot&; Anahtar Kelime çalışmas...
'deÄŸiÅŸken' anahtar kelime he...