Dahili Tipler (Build-in Types)
Dart dilinde şu özel tiplere özel destek bulunmaktadır:
Sayılar (int, double)
Dizeler (String)
Booleanlar (bool)
Kayıtlar (value1, value2)
Listeler (List, aynı zamanda diziler olarak bilinir)
Setler (Set)
Haritalar (Map)
Runes (Runes; genellikle karakterler API tarafından değiştirilir)
Semboller (Symbol)
null değeri (Null)
Bu destek, nesneleri literaller kullanarak oluşturma yeteneğini içerir. Örneğin, 'bu bir dizedir' bir dize literali ve true bir boolean literali.
Dart'ta her değişkenin bir sınıf örneği olan bir nesneye atıfta bulunduğunu unutmayın. Genellikle değişkenleri başlatmak için yapılandırıcıları kullanabilirsiniz. Bazı yerleşik tiplerin kendi yapılandırıcıları vardır. Örneğin, bir harita oluşturmak için Map()
yapılandırıcısını kullanabilirsiniz.
Bazı diğer tipler de Dart dilinde özel rolleri vardır:
Object: Null hariç tüm Dart sınıflarının üst sınıfı.
Enum: Tüm enumların üst sınıfı.
Future ve Stream: Asenkron destekte kullanılır.
Iterable: for-in döngülerinde ve senkron jeneratör fonksiyonlarında kullanılır.
Never: Bir ifadenin asla başarıyla değerlendirilemeyeceğini belirtir. Genellikle her zaman istisna fırlatan fonksiyonlar için kullanılır.
dynamic: Statik kontrolü devre dışı bırakmak istediğinizi belirtir. Genellikle bunun yerine Object veya Object? kullanmalısınız.
void: Bir değerin asla kullanılmadığını belirtir. Genellikle bir dönüş türü olarak kullanılır.
Object, Object?, Null ve Never sınıfları sınıf hiyerarşisinde özel rolleri vardır. Bu roller hakkında bilgi için "null safety" anlayışını inceleyin.
Sayılar
Dart sayıları iki türde gelir:
int: Platforma bağlı olarak 64 bit'ten büyük olmayan tamsayı değerleri. Web üzerinde tamsayı değerleri, JavaScript sayıları olarak temsil edilir (kesirli kısmı olmayan 64 bit kayan noktalı sayılar) ve -253 ile 253 - 1 arasında olabilir.
double: IEEE 754 standardında belirtildiği gibi 64 bit (çift hassasiyetli) kayan noktalı sayılar.
Hem int
hem de double
, num
alt tipleridir. num
tipi, +, -, / gibi temel operatörleri içerir ve aynı zamanda abs()
, ceil()
, floor()
gibi diğer yöntemleri bulunan yerdir. (<< gibi bitişik operatörler int
sınıfında tanımlanmıştır.) Eğer num
ve alt tiplerinde aradığınız şey yoksa, dart:math
kütüphanesinde bulabilirsiniz.
Tamsayılar ondalık noktasız sayılardır. İşte tamsayı literallerini tanımlamanın bazı örnekleri:
Bir sayı ondalık içeriyorsa, o bir double'dır. İşte double literallerini tanımlamanın bazı örnekleri:
Ayrıca bir değişkeni num
olarak bildirebilirsiniz. Bunu yaptığınızda, değişken hem int
(tamsayı) hem de double
değerlere sahip olabilir.
Tamsayı literalleri otomatik olarak double
'lara dönüştürülür:
int
türü, geleneksel bit kaydırma (<<, >>, >>>), tümleme (~), VE (&), VEYA (|), ve XOR (^) operatörlerini belirtir. Bunlar bit alanlarında bayrakları manipüle etmek için kullanışlıdır. Örneğin:
Daha fazla örnek için bitişik ve kaydırma operatörü bölümüne bakın.
Literal sayılar derleme zamanı sabitleridir. Operandları sayı olan derleme zamanı sabitler olduğu sürece, birçok aritmetik ifade de derleme zamanı sabitidir.
Daha fazla bilgi için Dart'ta Sayılar sayfasına bakın.
Dizeler
Bir Dart dizesi (String nesnesi), UTF-16 kod birimlerinin bir dizisini tutar. Bir dize oluşturmak için tek veya çift tırnakları kullanabilirsiniz:
Bir ifadenin değerini bir dizenin içine yerleştirmek için ${expression}
kullanabilirsiniz. Eğer ifade bir tanımlayıcı ise, {}
'yi atlayabilirsiniz. Bir nesnenin karşılık gelen dizesini almak için Dart, nesnenin toString()
yöntemini çağırır.
Not
==
operatörü, iki nesnenin eşit olup olmadığını test eder. İki dize, aynı kod birimleri dizisini içeriyorsa eşittir.
Dizeleri bitişik dize literalleri veya + operatörü kullanarak birleştirebilirsiniz:
Çok satırlı bir dize oluşturmak için üçlü tırnak kullanın, ya tek ya da çift tırnak işareti ile:
"Ham" bir dize oluşturmak için başına r ekleyin:
Unicode karakterlerini bir dizide nasıl ifade edeceğiniz hakkında detaylar için Runes ve grafem kümeleri bölümüne bakın.
Literal dizeler derleme zamanı sabitleridir, iç içe geçmiş ifade bir derleme zamanı sabitine dönüşürse ve bu sabit null veya sayısal, dize veya boolean bir değere değerlendirilirse.
Dizeleri kullanma hakkında daha fazla bilgi için Dizeler ve düzenli ifadeler sayfasına göz atın.
Boolean
Boolean değerleri temsil etmek için Dart'ta bool adında bir tür bulunmaktadır. bool
türünde yalnızca iki nesne bulunur: true ve false boolean literalleri, her ikisi de derleme zamanı sabitleridir.
Dart'ın tip güvenliği, if (nonbooleanValue)
veya assert (nonbooleanValue)
gibi kodları kullanamayacağınız anlamına gelir. Bunun yerine, değerleri açıkça kontrol etmelisiniz, örneğin:
Runes ve Grafem Kümeleri
Dart'ta, runeler bir dizenin Unicode kod noktalarını ortaya çıkarır. Kullanıcı tarafından algılanan karakterleri, yani Unicode (genişletilmiş) grafem kümelerini görüntülemek veya manipüle etmek için characters paketini kullanabilirsiniz.
Unicode, dünyanın tüm yazı sistemlerinde kullanılan her harf, rakam ve simge için benzersiz bir sayısal değer tanımlar. Bir Dart dizesi UTF-16 kod birimlerinin bir dizisi olduğundan, bir dize içinde Unicode kod noktalarını ifade etmek için özel bir sözdizimi gereklidir. Bir Unicode kod noktasını ifade etmenin yaygın yolu \uXXXX
, burada XXXX 4 haneli onaltılık bir değerdir. Örneğin, kalp karakteri (♥) \u2665
'tir. 4 onaltılık hane yerine değeri süslü parantez içine alabilirsiniz. Örneğin, gülme emoji (😆) \u{1f606}
'dır.
Bireysel Unicode karakterlerini okuma veya yazma ihtiyacınız varsa, characters paketi tarafından String üzerinde tanımlanan characters alıcısını kullanın. Dönen Characters nesnesi, dizenin bir dizi grafem kümesi olarak temsilidir. İşte characters API'ını kullanmanın bir örneği:
Çıktı, ortamınıza bağlı olarak şuna benzer olacaktır:
Dize manipülasyonları için characters paketini kullanma hakkında daha fazla bilgi için characters paketinin örnek ve API referansına bakın.
Semboller
Bir Symbol nesnesi, bir Dart programında bildirilen bir operatörü veya tanımlayıcıyı temsil eder. Semboller kullanmanız gerekli olmayabilir, ancak tanımlayıcı adlarını değiştirmeğin, ancak sembol adlarını değiştirmediği API'lar için çok değerli oldukları durumlar vardır.
Bir tanımlayıcı için sembolü almak için, sadece tanımlayıcının yanına #
ekleyin:
Last updated