0Pricing
Swift Academy · Ders

Seçmeliler

Seçmeliler

Seçmeliler, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 1 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 1 dersten oluşur.

Giriş

Merhaba,

İsteğe bağlı bir değişkenin bir değere sahip olmayabileceğini belirtmek için kullanılır.

İsteğe bağlı türdeki bir değişkenin değeri varsa bu değişkenin paketi açılır ve kullanılır. Aksi durumda bir değeri yoktur.

Swift'te birçok tür için isteğe bağlı kullanım

Obj-C. içindeki nil işaretçisiyle karşılaştırılabilir. Ancak nil işaretçisi yalnızca nesne türleri için geçerlidir.

Swift'teki isteğe bağlı türler yalnızca nesne türleri için değil, yapılar, numaralandırmalar veya basit türler için de kullanılır.

var optionalVar: String?
// optionalVar is automatically set to nil]
/*
Since we define it as optional without
assigning a value, the variable 
automatically takes the value of nil.
*/

Swift'teki nil ile Obj-C'deki nil aynı değildir

Swift'teki nil ile Obj-C'deki nil aynıdeğildir.

Obj-C'deki nil işaretçisi, nesnenin bulunmadığını belirtir. Swift'teki nil ise bir nil işaretçisi değildir. Swift'teki nil, verinin bulunmadığını belirtir ve yalnızca nesne türünü değil, diğer türleri de destekler.

zorla paketten çıkarma

İsteğe bağlı olarak tanımladığımız değişkenlere zorla paketten çıkarma yöntemi kullanılarak erişilebilir.

Ünlem işleciyle kodun paketi zorla açılabilir; ancak genel olarak kullanımı pek iyi değildir.

Zorla paketten çıkarma sırasında başvuru verisi mevcut değilse çalışma zamanı hatası alırız.

let convertedNumber : Int? = 123
if convertedNumber != nil {
    print("convertedNumber has an integer value of \(convertedNumber!).")
}
// Prints "convertedNumber has an integer value of 123."

İsteğe Bağlı Bağlama ile İsteğe Bağlı Değere Erişme

İsteğe Bağlı Bağlama ile İsteğe Bağlı Değere Erişme

if let bloğuyla, isteğe bağlı değişkenin değerini bir sabite veya değişkene atayarak bu değere erişebiliriz.

Zorla paketten çıkarma yerine bu yöntemi kullanmak daha zarif bir yaklaşımdır.

var possibleNumber : String? = "10"

if let actualNumber = possibleNumber {
    print(actualNumber)
}

örnek

if let firstNumber = Int("4"), let secondNumber = Int("42"), 
  firstNumber < secondNumber && secondNumber < 100 {
    print("\(firstNumber) < \(secondNumber) < 100")
}
// Prints "4 < 42 < 100"
/*
 If at least one of them is false,
 it will not be entered in the if blog.
*/

Örtük Olarak Paketten Çıkarılan İsteğe Bağlı Değerler

Örtük Olarak Paketten Çıkarılan İsteğe Bağlı Değerler

Bazı durumlarda isteğe bağlı değer ilk aşamada atanır ve sonraki aşamalarda kesinlikle nil olmaz.

Bu gibi durumlarda isteğe bağlı değer (?) yerine (!) işleciyle ifade edilerek bu değerin kesinlikle nil olmadığı belirtilir. 

Bu tanımlama biçimine 'örtük olarak paketten çıkarılan isteğe bağlı değerler' adı verilir.

örtük olarak paketten çıkarılmış

örtük olarak paketten çıkarılmış

En sık kullanıldığı alan sınıf başlatma aşamasıdır.

Geleneksel isteğe bağlı değerlerin aksine, örtük olarak paketten çıkarılmış değişkenlerin paketini açmamız gerekmez.

let possibleString: String? = "An optional string."
 // requires an exclamation mark
let forcedString: String = possibleString!

let assumedString: String! = "An implicitly unwrapped optional string."
// no need for an exclamation mark
let implicitString: String = assumedString 

örnek

Bu türdeki değişkenlere nil atarsak çalışma zamanı hataları alırız.

Bir örnek inceleyelim

/*
We can use it during optional binding or we can check for nil.
So we use implicitly unwrapped optional 
in the same way we use classic optional.
*/

var assumedString: String! = nil

if let definiteString = assumedString {
    print(definiteString)
}
// Prints "An implicitly unwrapped optional string."

Uyarı

Bir değişkenin nil olma ihtimali varsa, örtük olarak paketten çıkarılan isteğe bağlı değer kullanılmamalıdır.

Nil Birleştirme İşleci

Nil Birleştirme İşleci

İsteğe bağlı türlerin sarmalamasını açmayı kolaylaştırır.

Bunu bir örnek üzerinden görelim.

let defaultColorName = "red"
 // defaults to nil
var userDefinedColorName: String?  

var colorNameToUse = userDefinedColorName ?? defaultColorName
/*
userDefinedColorName is nil, 
so colorNameToUse is set to the default of "red"
*/


// a != nil ? a! : b 
/*
We can think of it as a shortcut to the above expression.
A checks if a is nil, if a is not nil, it unwrap and eturn, 
otherwise it returns the default value, ie b.
*/

Tebrikler

Tebrikler 🎉

İsteğe bağlı kavramı Swift'in en önemli özelliklerinden biridir. İsteğe bağlı türleri kullanarak Nil denetimlerinden kurtulur, kodlarımızı daha zarif bir şekilde yazar ve uygulamalarımızı daha güvenli hâle getiririz.

Bir sonraki derste görüşmek üzere 🥳

Seçmeliler — resim 12

Sıkça Sorulan Sorular

“Seçmeliler” dersi ücretsiz mi?

Evet — “Seçmeliler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 1 dersten oluşur.

“Seçmeliler” dersinde ne öğreneceğim?

Seçmeliler Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 1 dersinin 1. dersidir.

“Seçmeliler” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

← Swift Academy Sayfasına Dön