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.