Swift - Yapılar
Swift 4, yapıları Yapılar olarak kullanmak için esnek bir yapı taşı sağlar. Bu yapılardan yararlanarak bir kez yapı yöntemlerini ve özelliklerini tanımlayabilir.
C ve Hedef C'nin aksine
Yapının uygulama dosyaları ve arayüz gerektirmesi gerekmez.
Yapı, tek bir dosya oluşturmamızı ve arayüzünü otomatik olarak diğer bloklara genişletmemizi sağlar.
Yapı'da değişken değerleri kopyalanır ve eski değerlerin bir kopyası döndürülerek sonraki kodlara geçirilir, böylece değerler değiştirilemez.
Sözdizimi
Structures are defined with a 'Struct' Keyword.
struct nameStruct {
Definition 1
Definition 2
---
Definition N
}
Bir Yapının Tanımı
Örneğin, üç konunun puanlarını içeren öğrenci kayıtlarına erişmemiz ve üç konunun toplamını bulmamız gerektiğini varsayalım. Burada markStruct, veri türü 'Int' olarak üç işaretli bir yapıyı başlatmak için kullanılır.
struct MarkStruct {
var mark1: Int
var mark2: Int
var mark3: Int
}
Yapıya ve Özelliklerine Erişim
Yapının üyelerine yapı adıyla erişilir. Yapının örnekleri 'let' anahtar sözcüğü ile başlatılır.
struct studentMarks {
var mark1 = 100
var mark2 = 200
var mark3 = 300
}
let marks = studentMarks()
print("Mark1 is \(marks.mark1)")
print("Mark2 is \(marks.mark2)")
print("Mark3 is \(marks.mark3)")
Yukarıdaki programı oyun alanını kullanarak çalıştırdığımızda, aşağıdaki sonucu elde ederiz -
Mark1 is 100
Mark2 is 200
Mark3 is 300
Öğrenci işaretlerine 'studentMarks' yapı adı ile erişilir. Yapı üyeleri, tamsayı tipi değerleri ile mark1, mark2, mark3 olarak başlatılır. Daha sonra studentMarks () yapısı 'let' anahtar kelimesi ile 'işaretlere' aktarılır. Bundan sonra 'işaretler' yapı üye değerlerini içerecektir. Artık değerler yapı üye değerlerine '.' İle erişilerek yazdırılır. ilklendirilmiş isimleriyle.
struct MarksStruct {
var mark: Int
init(mark: Int) {
self.mark = mark
}
}
var aStruct = MarksStruct(mark: 98)
var bStruct = aStruct // aStruct and bStruct are two structs with the same value!
bStruct.mark = 97
print(aStruct.mark) // 98
print(bStruct.mark) // 97
Yukarıdaki programı oyun alanını kullanarak çalıştırdığımızda, aşağıdaki sonucu elde ederiz -
98
97
Yapıların En İyi Kullanım Uygulamaları
Swift 4 dili, yapıları işlev bloklarını oluşturmak için özel veri türleri olarak tanımlama işlevselliği sağlar. Yapı örnekleri, değeri tarafından daha fazla manipülasyon için tanımlanmış bloklara aktarılır.
Yapılara sahip olma ihtiyacı
Basit veri değerlerini özetlemek için.
Kapsüllenmiş verileri ve ilişkili özelliklerini 'referanslar' yerine 'değerler' ile kopyalamak için.
'Kopyalama' ve 'Referans' Yapısı.
Swift 4'teki yapılar, üyelerini referanslarından çok değerleriyle geçiriyor.
struct markStruct {
var mark1: Int
var mark2: Int
var mark3: Int
init(mark1: Int, mark2: Int, mark3: Int) {
self.mark1 = mark1
self.mark2 = mark2
self.mark3 = mark3
}
}
var marks = markStruct(mark1: 98, mark2: 96, mark3:100)
print(marks.mark1)
print(marks.mark2)
print(marks.mark3)
Yukarıdaki programı oyun alanını kullanarak çalıştırdığımızda, aşağıdaki sonucu elde ederiz -
98
96
100
Başka bir örnek
struct markStruct {
var mark1: Int
var mark2: Int
var mark3: Int
init(mark1: Int, mark2: Int, mark3: Int) {
self.mark1 = mark1
self.mark2 = mark2
self.mark3 = mark3
}
}
var fail = markStruct(mark1: 34, mark2: 42, mark3: 13)
print(fail.mark1)
print(fail.mark2)
print(fail.mark3)
Yukarıdaki programı oyun alanını kullanarak çalıştırdığımızda, aşağıdaki sonucu elde ederiz -
34
42
13
'MarkStruct' yapısı ilk olarak mark1, mark2 ve mark3 üyeleriyle tanımlanır. Şimdi üye sınıfların değişkenleri, tamsayı değerlerini tutacak şekilde başlatılır. Daha sonra yapı üyelerinin kopyası 'self' Anahtar Kelime ile oluşturulur. Yapı elemanlarının kopyaları oluşturulduktan sonra, parametre işaretleriyle birlikte yapı bloğu, artık öğrencilerin işaretlerini tutacak olan 'işaretler' değişkenine aktarılır. Daha sonra işaretler 98, 96, 100 olarak yazdırılır. Aynı yapı üyeleri için sonraki adım, aynı yapı üyelerini farklı işaretlerle işaret etmek için "başarısız" adlı başka bir durum kullanılır. Daha sonra sonuçlar 34, 42, 13 olarak yazdırılır. Bu, yapıların üye değişkenlerinin bir kopyasına sahip olacağını ve daha sonra üyeleri sonraki işlev bloklarına aktaracağını açık bir şekilde açıklar.