Swift dilinde değişken tanımlamak için “var” veya “let” keywordleri kullanılır. Bunların farkına birazdan değineceğiz. Şimdi editörümüze aşağıdaki tanımlamaları yapalım.
let ad = "geleceği yazanlar"
let yil = 2018
Görüldüğü gibi herhangi bir değişken tipi belirtilmediğine rağmen ad’ın string yil’ınsa integer bir tip olduğunu swift anlamıştır. Buna type inference denilmektedir. Genelde tip belirleme iş swifte bırakılır ama belirtilmek isteniyorsa aşağıdaki gibi değişken adından sonra :<değişkenin tipi> yazılması yeterli olmaktadır. (Tipin yazılırken belirlenmesi, derleyiciye ekstra iş yükü olmadığından, kodun derlenme süresi azalır, çalışırken herhangi bir farkı yoktur.)
let name: String = "geleceği yazanlar"
print(name)
Değişkenler sayıları, kelimeleri, harfleri, boolean değerleri ve daha fazlasını depolayabilir. Aşağıdaki tabloda veri tiplerini ve depolayabildikleri değer aralıklarını görüyoruz.
Tabloya bakınca float ve doublein benzer olduğunu bir diğerine neden ihtiyaç duyabileceğimizi düşünebiliriz. Double’ın hassasiyeti floattan daha fazladır. Direkt double'ı kullanmak daha mantıklı gelebilir ama hızın doğruluktan daha önemli olduğu durumlarda float'ı kullanmak daha doğru bir tercih olacaktır.
Bu arada örneklerden de farkettiğiniz gibi komutun bittiğini yine swiftte bırakıp genel bir alışkanlık olan komut sonuna “;” eklemekten kurtulunur.
Değişkene değer atama
//ilk atama
var age= 18
age = 19
age = 20
Swift strong type bir dildir. İlk atadığın veri tipini daha sonra değiştirilemez.
age = "23" //atama yapılmaz
Cannot assign value of type 'String' to type 'Int'
Constants
Constant değikenler, daha sonradan değeri değiştirilemeyen değişkenlerdir. Let keywordu ile tanımlanır. Var keyworduyle tanımlanan değişkenlerde böyle bir durum yoktur, sıradan değişkenlerdir. Kısaca değişkeni daha sonra değiştireceksek var, değiştirmeyeceksek let keywordu kullanılır. Aşağıda let ve var kullanım örneklerini inceleyelim.
var currentMinute= 23 //şuanki zaman sürekli değişeceği için var keywordunu kullanılır.
var name = "geleceği yazanlar" //burda ad sabit olduğu için let keywordunu kullanmak tercih edilir.
let age = 23
age = 23 //atanmaz
ERROR: Cannot assign a value: 'encouragement' is a 'constant'
Swift, değişkenlere istediğiniz ismi vermenize izin verirken bu isimleri nasıl seçtiğimize dair bazı kuralı ve düzeni vardır.
Genelde kullanılmasa bile isimlendirken emoloji kullandırımına izin verilir.
- Değişkene ismi verirken genelde ilk kelime küçük sonraki kelimeler büyük harfle başlanır.
let nameOfProduct = "Gelecegi Yazanlar" let vehicle = "otobus"
-
Özel karakterlere isim veriken genelde ismin başına alt çizgi konulur.
let founder = "Steve Jobs"
- Genelde kullanılmasa bile isimlendirken emoloji kullandırımına izin verilir.
- Değişken isimlerinin rakamla başlanmasına izin verilmez.
let 3rdMounth = "Mart"
- Değişken tanımlarken Türkçe karakter de kullanılabilir.
var araçMarkası = "Ford"
- Özel karakterle başlanmasına izin verilmez.
var $tamunt = 31
- Birçok yeni programcı, isimleri kısa tutmak için kısaltmalar seçecektir. Fakat bu kısaltmaları seçerken, kodu daha sonra okuduğunuzda ya da takım arkadaşlarınızın anlamak için zorlanmaması için özen gösterilir.
let wh = 13.50 //working hours let bd = "13.07.1994" //birthdate
Görüldüğü gibi bir çok değişkene isim verirken bir çok seçeneğimiz bulunmaktadır. Ama standarttan ne kadar az uzaklaşırsak o kadar iyi olacaktır .
Literals
Apple’a göre literal “String, integer gibi bir tipin kaynak kod gösterimidir.” . Yani değişkene atanılan değerdir.
let myFavouriteNumber= 5
var clubName = "fenerbahçe"
Burada 5 ve “fenerbahce” literaldir. Bu değerler doğrudan Swift'deki değerlere karşılık gelir.
Ancak aşağıdaki gibi yazılırsa;
var teamName = clubName
Buradaki takimAdi, değeri “fenerbahçe” ile aynı olsa bile literal değildir. Bu örnekteki literaller integer ve string değerleridir.
String literal
Swift'de bir string oluşturmak için tırnak işaretleri arasında nasıl bir değer yazılabileceğini gördünüz. Gelecek derslerde stringleri çok kullanacağımız için, ilk dersi tamamlamadan önce, stringlerin bazı kullanışlı özelliklerini keşfedelim.
let contact = "Turkcell Küçükyalı Plaza (Genel Müdürlük)
Aydınevler Mahallesi İnönü Caddesi
No:20 Küçükyalı Ofispark B Blok
Maltepe / İSTANBUL
(0212) 313 10 00"
Ancak bunu playgroundda çalıştırmayı denerseniz aşağıdaki gibi hata alırsınız.
unterminated string literal
Bilgisayarlar, bir string içinde satır sonu olarak ifade edilen yeni satır ile farklı satırları ayrım yapamazlar. Ama bizim alt satıra geçmeye ihtiyacımız var? Swift gibi programlama dilleri bu problemle çözüm sunuyor; “escape characters”. Bunlar yeni satır gibi karakter yazmanın özel yollardır.
Şimdi örneğimize alt satıra geçmek istediğimiz yerlere \n ekleyerek yeniden düzenleyelim.
let contact = "Turkcell Küçükyalı Plaza (Genel Müdürlük) \nAydınevler Mahallesi İnönü Caddesi \nNo:20 Küçükyalı Ofispark B Blok \nMaltepe / İSTANBUL \n(0212) 313 10 00"
print(contact)
Görüldüğü gibi /n ile alt satıra geçmiş olduk. Aşağıdaki tabloda bazı escape karakterlerini ve açıklamalarını görebilirsiniz.
String birleştirme, string literallerin önemli özelliklerindendir. Değişkenleri ve ifadeleri doğrudan string literaline eklememizi sağlar.Aşağıdaki örneği inceleyelim.
var message = "Hoş geldin"
print(message)
Kodu çalıştırdığımızda çıktı olarak sadece “Hoşgeldin” yazısını görürüz. Bu mesajı bir kişi için özelleştirmek ve kişi ismini bir değişkenden almak istendiğinde stringin bu özelliğini kullanırız.
var name = "Mustafa"
var messagge = "Hoş geldin , \(name)!"
print(messagge)
Bu sayede iki string değeri birleştirildi. Bunu sadece ters slashın yanında parantez içinde değişken adımızı yazılarak sağlandı.
/(degiskenAdi)
Integer Literal
Bir integer literal, ondalık(decimal), ikili(binary), sekizli(octal) veya onaltılık(hexadecimal) olabilir. Binary literal 0b ile başlar, octal literal 0o ile başlar, hexadecimal literaler 0x ile başlar ve decimaller için hiçbir şey yoktur.
let decimalInteger = 17 // 17 nin decimal gösterimi
let binaryInteger = 0b10001 // 17 nin binary gösterimi
let octalInteger = 0o21 // 17 nin octal gösterimi
let hexadecimalInteger = 0x11 // 17 in hexadecimal gösterimi
Boolean Literal
Üç tanelerdir ve bunlar standart Swift 4 anahtar kelimelerindendir.
- true; true değeri temsil eder.
- false; false değeri temsil eder.
- nil; değeri olmayan birşeyi temsil eder.
Yorum Satırı
Yorum satırı; kodun derlenken compiler tarafından bir önemin olmadığı kodu okuyannın ya da kodu yazanın kendine bıraktığı notlardır. Swift, kodlarının arasına yorum ekleyebilmek için iki seçenek sunuyor.
Yorumun başına iki slash ekleyerek. Bir satır için geçerlidir.
//Yorum satırı
Yorumun başıyla sonuna slash ve yıldız eklererek.
/* Yorum
satırı */
İpucu: Yoruma almak istendiğinde, kod satırları seçilip cmd/shift/7’e basılırsa toplu olarak satırların başına // eklenip yorum satırına alınır.
Tam Sayılarda Sınırlar
min ve max özelliklerini kullanarak her tamsayı tipinin alabileceği en küçük ve en büyük değerleri bulabilirsiniz.
let enKucuk=UInt8.min// enKucuk değişkeninin değeri 0 olacaktır.
let enBuyuk=UInt8.max // enBuyuk değişkeninin değeri 255 olacaktır.
Int
Int türünde tanımlanan bir değişken, 32 bitlik bir platformda Int32 ile aynı anlamdadır.
Gene, Int türü, 64 bitlik platformda ise Int64 tipi ile aynı anlamdadır.
Int türünde tanımlanan değişken,
-2,147,483,648 ile 2,147,483,647 arasında değerler alabilir ve bu pek çok durumda tam sayı değerler için yeterlidir.
UInt
Swift, ayrıca işaretsiz tam sayılar için UInt türünü de haizdir. UInt, bulunduğu platformun işaretsiz tamsayı için default olarak kullandığı tip ile aynı değerleri alır. 32 bitlik platformlarda, UInt, UInt32 ile aynı anlamdadır. 64 bitlik platformlarda ise UInt, UInt64 ile aynı anlamdadır.