Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
March 21, 2022 08:00 pm GMT

Null 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:
Image description

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:

Image description

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:

Image description

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.

Image description

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 ...

Resource


Original Link: https://dev.to/gulsenkeskin/null-safety-3idg

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To