SALE ENDS TODAY: Save 50% on all Swift books and bundles! >>

Veri Tipleri

Birçok veri tipi vardır ve Swift hepsi ile ayrı ayrı başedebilir. Bir değişkene metin ekleyerek en önemli tiplerden birini zaten gördünüz. Bu tip Swift dilinde String olarak adlandırılır; tam karşılığıyla karakterler dizisi.

String'ler uzun olabilir (örneğin bir milyor harf veya daha fazla), kısa olabilir (örneğin 10 harf) veya boş bile olabilir (hiç harf yok), önemli değil. Swift için hepsi aynı ve aynı şekilde çalışır. Swift name sözcüğünün bir metin saklayacağını biliyor, çünkü onu yaratırken "Tim McGraw" sözcüklerini atadık. Eğer kodu şuna göre yeniden yazsaydın, çalışmayı durdururdu:

var name
name = "Tim McGraw"

Bu kez XCode, henüz sana bir anlam ifade etmeyen bir hata mesajı verirdi: "Type annotation missing in pattern" (Tip belirteci eksik). Bu şu anlama gelir: " name sözcüğünün hangi veri tipinde olduğunu anlayamadım, çünkü bana yeterli bilgi vermemişsin."

Bu noktada iki seçeneğin var: Ya oluşturduğun değişken ve ona verdiğin ilk değer aynı satırda olacak, veya Swift'e hemen değer atamasan bile sonrasında değişkenin hangi veripini tutacağını, tip belirteci denilen şeyi kullanarak söyleyeceksin.

İlk seçeneğin nasıl göründüğünü zaten biliyorsun, o yüzden ikincisine bakalım: Tip belirteçleri. Biliyoruz ki, name sözcüğü bir String olacak, o zaman aşağıdaki gibi iki nokta üst üsteden sonra String yazarak bunu Swift'e söyleyebiliriz:

var name: String
name = "Tim McGraw"

Gerçek uygulama projelerinde –oyun alanına göre zıt bir şekilde– bu güzel bir şekilde işleyebilir, çünkü Swift gelecekte name sözcüğünün hangi veri tipinde olacağını biliyor. Oyun alanları hafifçe özel bir durum, dolayısıyla oyun alanında hata almaya devam edeceksin.

Not: Bazı geliştiriciler şu şekilde yaparak var name : String iki nokta üst üsteden sonra ve önce birer boşluk bırakıyor, ama bu yanlış ve narin iş ortaklıklarında bunu dillendirmekten kaçınmalısınız.

Buradaki ders, Swift tüm değişkenlerin veya sabitlerin tutacağı veri tipini her zaman bilmek istediğidir. Her zaman. Bundan kaçamazsın. Ama bu zaten iyi bir şeydir çünkü veri tipi güvenliğini sağlar; eğer "bu bir String veri içerecek" dersen, ama sonra içine tavşan koymaya kalkışırsan, Swift bunu reddedecektir.

Bunu bir diğer önemli veri tipi ve integer'in (tam sayı) kısaltması olan Int tanıtırken deneyebiliriz. Tam sayılar 3, 30, 300 veya -16777216 gibi yuvarlak sayılardır. Örneğin:

var name: String
name = "Tim McGraw"

var age: Int
age = 25

Yukarıdakiler bir metin tutan bir değişkeni ve tam sayı olan diğer değişkeni gösteriyor. String ve Int belirteçlerinin ikisinin de büyük harfle başladığına dikkat edin. Halbuki name ve age küçük harfle başlıyor; Swift dilinde geleneksel kodlama bu şekildedir. Kodlama geleneği Swift için bir anlam ifade etmez (isimleri istediğiniz gibi yazabilirsiniz!), ama bu diğer geliştiriciler için önemlidir. Bu durumda, veri tipleri büyük harfle başlarken, değişken ve sabit isimleri küçük harfle başlar.

Şimdi iki farklı tip değişkenimiz var. Tip güvenliğini burada görebilirsiniz. Şunu yazmayı deneyin:

name = 25
age = "Tim McGraw"

Bu kodla, bir metin değişkeni içine tam sayı, bir tam sayı değişkeni içine de metin değişkeni koymayı deniyorsunuz. Şükürler olsun ki, XCode hata veriyor. Bunu belki aşırı titiz bulabilirsiniz, ama bu aslında oldukça kullanışlı: Bir anlaşma yaptın ve değişken tek bir özel veri tipi tutuyor ve XCode projeniz boyunca bunu aklında tutuyor.

Devam etmeden, lütfen hataya yol açan bu iki satırı silin, aksi taktirde oyun alanınızda sonradan yazacağınız hiçbir şey çalışmayacak!

Float and Double (Kesirli ve Ondalıklı)

Float ve Double olarak anılan şu iki veri tipine bakalım. 3.1, 3.141, 3.1415926 ve -16777216.5 gibi kesirli sayıları Swift'in tutma yoludur. Ne kadar duyarlı olması gerektiğine göre iki tane veri tipi var bu konuda. Ama çoğunlukla, hangisini kullandığın önemli değil. Duyarlılığı en yüksek olduğu için resmi Apple tavsiyesi Double kullanılması yönünde.

Oyun alanınıza şunları yazın:

var latitude: Double
latitude = 36.166667

var longitude: Float
longitude = -86.783333

Her iki sayıyı da sağda görebilirsiniz, ama dikkatle bakarsanız, aralarında küçük farklar olduğunu görürsünüz. longitude değişkeni -86.783333 sayısına eşit olması gerektiğini söyledik, ama sonuç panelinde -86.78333 rakamını görüyorsunuz. Sondaki 3 rakamı yok. Şimdi "arkadaşlar arasında 0.000003 ne önemi var?" diyebilirsiniz, ama bu duyarlılık hakkında söylediğim şeyin ustaca bir gösterimidir.

Oyun alanlarında yazdığımız hemen güncellendiği için, Float ve Double arasındaki farkı tam olarak görebileceğiniz birşeyler deneyebiliriz. Kodu şu şekilde değiştirmeyi deneyiniz:

var longitude: Float
longitude = -86.783333
longitude = -186.783333
longitude = -1286.783333
longitude = -12386.783333
longitude = -123486.783333
longitude = -1234586.783333

Noktadan sonraki sayılar aynı kalmak üzere, ondalık kısımdan önceki sayıların artması bu. Ama eğer sonuç paneline bakarsanız, noktadan önce ne kadar rakam eklerseniz, noktadan sonra o kadar rakamı Swift siliyor. Bu, ne kadar sayı tutabileceğinin sınırlandırılmasıyla ilgili; sayının noktadan önceki kısmı en önemli kısmı. 1,000,000 olmak büyük bir şeyse, 0.000003 olmak da o kadar küçük.

Swift dilinde Float veri tipi, Double'dan daha az bilgi tutar, dolayısıyla mümkün olan yerde Double kullanmalısınız.

Şimdi Float sözcüğünü Double ile değiştirmeyi deneyin. Göreceksiniz ki, Swift her defasında doğru sayının çıktısını verecek:

var longitude: Double

Tekrar söylemek gerekirse Double, Floattan daha fazla duyarlıdır. Dolayısıyla sayınızı, sığdırabilmek için kesmenize gerek yoktur; 123456789.123456789 gibi büyük bir sayıyı denerseniz, 123456789.12345679 olarak kesildiğini görebilirsiniz.

Boolean

Swift, bir değişkenin doğru veya yanlış olduğunu tutan, Boolean'ın kısaltması olan Bool adında bir veri tipine sahiptir. Bool, "belki" veya "olabilir" gibi seçeneklere sahip değildir; sadece kesin olanlar: Doğru veya yanlış. Örneğin:

var stayOutTooLate: Bool
stayOutTooLate = true

var nothingInBrain: Bool
nothingInBrain = true

var missABeat: Bool
missABeat = false

Tip belirteçlerini akıllıca kullanma

Öğrendiğiniz şekliyle, bir değişkenin tuttuğu veri tipini Swift diline anlatmanın iki yolu var: Bir değişkene daha oluşturulurken bir değer atamak veya tip belirteci kullanmak. Seçim şansınız varsa, ilki her zaman daha tercih edilebilir, çünkü daha açık. Örneğin:

var name = "Tim McGraw"

…şuna tercih edilebilir:

var name: String
name = "Tim McGraw"

Bu tüm veri tipleri için böyledir. Örneğin:

var age = 25
var longitude = -86.783333
var nothingInBrain = true

Bu teknik tip çıkarsaması olarak bilinir, çünkü Swift bir değişkenin içine koyduğunuz veriye bakarak, hangi veri tipinde olduğunu çıkarsayabilir. -86.783333 gibi bir rakam geldiğinde, Swift her zaman Float yerine Double veri tipini tercih edecektir.

Konuyu tamamlamak adına, veri tipinin ve değerin aynı anda verilebildiği şu seçeneği de eklemeliyim:

var name: String = "Tim McGraw"

SPONSORED Instabug helps you identify and resolve severe crashes quickly. You can retrace in-app events and know exactly which line of code caused the crash along with environment details, network logs, repro steps, and the session profiler. Ask more questions or keep users up-to-date with in-app replies straight from your dashboard. Instabug takes data privacy seriously, so no one sees your data but you! See more detailed features comparison and try Instabug's crash reporting SDK for free.

Save 50% on all books and bundles

The biggest ever Hacking with Swift sale is now on, letting you save 50% on all books and bundles. Learn something new with Swift and enjoy great savings while the sale lasts!

Click here to save 50% in our Black Friday sale!

BUY OUR BOOKS
Buy Pro Swift Buy Swift Design Patterns Buy Testing Swift Buy Hacking with iOS Buy Swift Coding Challenges Buy Swift on Sundays Volume One Buy Server-Side Swift (Vapor Edition) Buy Advanced iOS Volume One Buy Advanced iOS Volume Two Buy Advanced iOS Volume Three Buy Hacking with watchOS Buy Hacking with tvOS Buy Hacking with macOS Buy Dive Into SpriteKit Buy Swift in Sixty Seconds Buy Objective-C for Swift Developers Buy Server-Side Swift (Kitura Edition) Buy Beyond Code

Was this page useful? Let us know!