Sobes.tech
Intern

Veri tipleri nedir ve hangileri mevcuttur?

sobes.tech yapay zeka

AI'dan gelen yanıt

Veri tipleri, olası değerler kümesini ve üzerinde gerçekleştirilebilecek işlemleri tanımlar. Swift'te, bunlar Değer Tipleri ve Referans Tipleri olarak ayrılır.

Değer Tipleri:

  • Değerler, atama veya fonksiyonlara geçirme sırasında kopyalanır.
  • Her değişken veya sabit, verilerin bağımsız kendi kopyasını tutar.
  • Bir kopyadaki değişiklikler diğerlerini etkilemez.

Değer Tiplerine örnekler:

  • Yapılar (struct)
  • Enumlar (enum)
  • Demetler (tuple)
  • Temel tipler: Int, Double, Bool, String, diziler (Array), sözlükler (Dictionary), kümeler (Set).
// Değer Tipi Örneği: struct
struct Point {
    var x: Int
    var y: Int
}

var p1 = Point(x: 1, y: 2)
var p2 = p1 // p2, p1'in kopyasını alır
p2.x = 10 // p2'deki değişiklik, p1'i etkilemez

print("p1: \(p1)") // p1: Point(x: 1, y: 2)
print("p2: \(p2)") // p2: Point(x: 10, y: 2)

Referans Tipleri:

  • Değerler kopyalanmaz. Atama veya geçirme sırasında,
  • aynı bellek örneğine referans geçilir.
  • Birden fazla değişken veya sabit, aynı örneğe referans edebilir.
  • Bir referans aracılığıyla yapılan değişiklikler, diğer tüm referanslarda görünür.

Referans Tiplerine örnekler:

  • Sınıflar (class)
  • Fonksiyonlar (func)
  • Kapanışlar (closure)
// Referans Tipi Örneği: class
class Circle {
    var radius: Double

    init(radius: Double) {
        self.radius = radius
    }
}

var c1 = Circle(radius: 5.0)
var c2 = c1 // c2, c1 ile aynı örneğe referans
c2.radius = 10.0 // c2'deki değişiklik, c1'i etkiler

print("c1 radius: \(c1.radius)") // c1 radius: 10.0
print("c2 radius: \(c2.radius)") // c2 radius: 10.0

Ana tipler tablosu:

Kategori Tip(ler) Değer/Referans Tipi Açıklama
Tam sayılar Int, UInt, Int8, UInt8 vb. Değer Farklı boyutlarda, işaretli veya işaretsiz tam sayılar
Ondalıklı sayılar Float, Double Değer Ondalıklı sayılar
Boolean'lar Bool Değer Mantıksal değerler (true veya false)
Dizgiler String Değer Karakter dizisi
Koleksiyonlar Array, Dictionary, Set Değer Sıralı / sırasız koleksiyonlar aynı türdeki öğelerle
Yapılar struct Değer Kullanıcı tanımlı, ilişkili değerleri tutan karmaşık tipler
Enumlar enum Değer İlişkili değerler grubunu tanımlayan ortak tip
Demetler (value1, value2, ...) Değer Birden fazla değeri tek bir tipte gruplar
Sınıflar class Referans Kullanıcı tanımlı, kalıtım ve referans davranışını destekleyen tipler
Fonksiyonlar () -> Void, (Int) -> String vb. Referans Çalıştırılabilir kod blokları
Kapanışlar { (parameters) -> return type in code } Referans Bağımsız kod blokları, geçirilebilir ve kullanılabilir
Opsiyoneller Type? (sözdizimi şekerleri Optional<Type>) Değer Type türü veya yokluğu (nil) temsil eder

Değer ve Referans Tipleri arasındaki seçim, göreve bağlıdır: Değer Tipleri küçük veriler ve çoklu iş parçacığı güvenliği için tercih edilir, Referans Tipleri ise paylaşılan durumu ve kalıtımı gerektiren karmaşık nesneler için uygundur.