널 안전 💫 🌌 ✨
5205 단어 flutternullsafetydartmobile
팁 시스템에서 null yapılabilirlik
Null yapılamayan ve null yapılabilen türler
Null yapılabilir türleri kullanma
Tip sisteminde null yapılabilirlik
Null 안전, 통계 팁 시스템은 그녀의 안전을 보장하지 않습니다. Dart programınızın içinde tam bir tür evreni vardır: int ve String gibi ilkel türler, Liste gibi koleksiyon türleri ve sizin ve kullandığınız paketlerin tanımladığı tüm sınıflar ve türler.
Tip teorisi lingo'da, Null tipi, tüm tiplerin bir alt tipi olarak ele alındı:
Bazı ifadelerde izin verilen işlemler kümesi (getters, setters, methods ve operator) türüne göre tanımlanır. 목록에 .add()를 추가하면 []를 사용할 수 있습니다. Eğer int ise, + arayabilirsiniz. Ancak null value, bu methodlardan hiçbirini tanımlamaz. Null'un başka türden bir ifadeye akmasına izin vermek, bu işlemlerden herhangi birinin başarısız olabileceği anlamına gelir. Bu gerçekten null referans hatalarının en önemli noktasıdır - her başarısızlık null üzerinde sahip olmadığı bir method veya property aramaya çalışmaktan kaynaklanır.
Null yapılamayan ve null yapılabilen türler
Null 안전, tür hiyerarşisini değiştirerek bu sorunu kökünden ortadan kaldırır. Null türü hala vardır, ancak artık tüm türlerin bir alt türü değildır. Bunun yerine, tür hiyerarşisi şöyle görünür:
Null artık bir alt tür olmadığından, özel Null sınıfı dışında hiçbir tür null değerine izin vermez. 당신은 당신이 당신의 마음에 들지 않을 때까지 당신의 마음에 들지 않을 것입니다.
// Using null safety:
makeCoffee(String coffee, [String? dairy]) {
if (dairy != null) {
print('$coffee with $dairy');
} else {
print('Black $coffee');
}
}
Null yapılabilir türleri kullanmak
// Varsayımsal sağlam olmayan boş güvenlik:
bad(String? maybeString) {
print(maybeString.length);
}
main() {
bad(null);
}
Null yapılamayan bir türü, null yapılabilir bir tür bekleyen bir şeye geçirmek her zaman güvenlidir.
Null yapılabilir bir tür bekleyen bir şeye güvenle null iletebilirsiniz, bu nedenle Null ayrıca her null yapılabilir türün bir alt türüdür:
Ancak diğer yöne gitmek ve null yapılabilir bir türü, temeldeki null olmayan türü bekleyen bir şeye geçirmek güvenli değildir.
// Varsayımsal sağlam olmayan boş güvenlik:
requireStringNotNull(String definitelyString) {
print(definitelyString.length);
}
main() {
String? maybeString = null; // Or not!
requireStringNotNull(maybeString);
}
Bu 프로그램 güvenli değildir. Bununla birlikte, Dart her zaman implicit downcasts (örtük düşüşler) denilen bir şeye sahiptir. Örneğin, String bekleyen bir fonksiyona Object türünde bir değer iletirseniz, tür denetleyicisi buna izin verir:
// null safety olmadan:
requireStringNotObject(String definitelyString) {
print(definitelyString.length);
}
main() {
Object maybeString = 'it is';
requireStringNotObject(maybeString);
}
요구 사항에 대한 코루마 크는 다음과 같으며, requireStringNotObject() 인수는 문자열로 지정되지 않습니다. Bu doküm, çalışma zamanında başarısız olabilir ve bir istisna oluşturabilir, ancak derleme zamanında Dart, bunun sorun olmadığını söyler. Null yapılamayan türler, null yapılabilir türlerin alt türleri olarak modellendiğinden, implicit downcasts String? bekleyen bir şeye bir String'i geçmenize 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() yöntemi lazy'dir, bu nedenle bir Liste değil Iterable bir değer döndürür.
Bu resimde null yapılamayan türlerden oluşan bir bölge vardır. Bu türler, tüm ilginç yöntemlere erişmenize izin verir, ancak hiçbir zaman null içeremez. Ve sonra karşılık gelen tüm null yapılababilir türlerin 병렬 bir ailesi vardır. Bunlar null'a izin verir, ancak onlarla fazla bir şey yapamazsınız.
devamı bir sonraki yazıda ...😴
Resource
Reference
이 문제에 관하여(널 안전 💫 🌌 ✨), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gulsenkeskin/null-safety-3idg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)