An Interest In:
Web News this Week
- April 24, 2024
- April 23, 2024
- April 22, 2024
- April 21, 2024
- April 20, 2024
- April 19, 2024
- April 18, 2024
Some of Our Sources
View All SourcesNull Safety
indekiler:
Tip sistemlerinde null yaplabilirlik
Null yaplamayan ve null yaplabilen trler
Null yaplabilir trleri kullanma
Tip sisteminde null yaplabilirlik
Null safety statik tip sistemde balar nk dier her ey buna dayanr.Dart programnzn iinde tam bir tr evreni vardr: int ve String gibi ilkel trler, Liste gibi koleksiyon trleri ve sizin ve kullandnz paketlerin tanmlad tm snflar ve trler.
Tip teorisi lingo'da, Null tipi, tm tiplerin bir alt tipi olarak ele alnd:
Baz ifadelerde izin verilen ilemler kmesi (getters, setters, methods ve operatrler) trne gre tanmlanr. Tr Liste ise, zerinde .add() veya [] esini arabilirsiniz. Eer int ise, + arayabilirsiniz. Ancak null value, bu methodlardan hibirini tanmlamaz. Null'un baka trden bir ifadeye akmasna izin vermek, bu ilemlerden herhangi birinin baarsz olabilecei anlamna gelir. Bu gerekten null referans hatalarnn en nemli noktasdr - her baarszlk null zerinde sahip olmad bir method veya property aramaya almaktan kaynaklanr.
Null yaplamayan ve null yaplabilen trler
Null safety, tr hiyerarisini deitirerek bu sorunu kknden ortadan kaldrr. Null tr hala var, ancak artk tm trlerin bir alt tr deil. Bunun yerine, tr hiyerarisi yle grnr:
Null artk bir alt tr olmadndan, zel Null snf dnda hibir tr null deerine izin vermez. Bu tm trlerin varsaylan olarak null yaplamaz hala geldiini ifade eder.
// Using null safety:makeCoffee(String coffee, [String? dairy]) { if (dairy != null) { print('$coffee with $dairy'); } else { print('Black $coffee'); }}
Null yaplabilir trleri kullanmak
// Varsaymsal salam olmayan bo gvenlik:bad(String? maybeString) { print(maybeString.length);}main() { bad(null);}
Null yaplamayan bir tr, null yaplabilir bir tr bekleyen bir eye geirmek her zaman gvenlidir.
Null yaplabilir bir tr bekleyen bir eye gvenle null iletebilirsiniz, bu nedenle Null ayrca her null yaplabilir trn bir alt trdr:
Ancak dier yne gitmek ve null yaplabilir bir tr, temeldeki null olmayan tr bekleyen bir eye geirmek gvenli deildir.
// Varsaymsal salam olmayan bo gvenlik:requireStringNotNull(String definitelyString) { print(definitelyString.length);}main() { String? maybeString = null; // Or not! requireStringNotNull(maybeString);}
Bu program gvenli deil ve buna izin vermemeliyiz. Bununla birlikte, Dart her zaman implicit downcasts (rtk dler) denilen bir eye sahipti. rnein, String bekleyen bir fonksiyona Object trnde bir deer iletirseniz, tr denetleyicisi buna izin verir:
// null safety olmadan:requireStringNotObject(String definitelyString) { print(definitelyString.length);}main() { Object maybeString = 'it is'; requireStringNotObject(maybeString);}
Salaml korumak iin derleyici, requireStringNotObject() argmanna sessizce bir as String dkm ekler. Bu dkm, alma zamannda baarsz olabilir ve bir istisna oluturabilir, ancak derleme zamannda Dart, bunun sorun olmadn sylyor. Null yaplamayan trler, null yaplabilir trlerin alt trleri olarak modellendiinden, implicit downcasts String? bekleyen bir eye bir String'i gemenize izin verir.
// Using null safety:requireStringNotObject(String definitelyString) { print(definitelyString.length);}main() { Object maybeString = 'it is'; requireStringNotObject(maybeString as String);}
// null safety olmadan:List<int> filterEvens(List<int> ints) { return ints.where((n) => n.isEven);}
Hatay fark ettiniz mi? .where() yntemi lazy'dir, bu nedenle bir Liste deil Iterable bir deer dndrr.
Bu resimde null yaplamayan trlerden oluan bir blge var. Bu trler, tm ilgin yntemlere erimenize izin verir, ancak hibir zaman null ieremez. Ve sonra karlk gelen tm null yaplabilir trlerin paralel bir ailesi var. Bunlar null'a izin verir, ancak onlarla fazla bir ey yapamazsnz.
devam ...
Original Link: https://dev.to/gulsenkeskin/null-safety-3idg
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To