Swift ile Comparable | Karşılaştırma

Swift dilinde bir struct yapısına Comparable protokolünü uygulamak için static func < fonksiyonunu yazabilirsiniz. Bu fonksiyon, struct’ın diğer örnekleriyle karşılaştırma yapmak için kullanılır.

Bu örnekte, Product adlı bir struct oluşturduk ve bu struct’a Comparable protokolünü uyguladık. Ardından, static func < fonksiyonunu tanımlayarak iki Product örneğini fiyatlarına göre karşılaştırıyoruz. Eğer product1 < product2 ifadesi true ise, o zaman product1‘in fiyatı product2‘den daha düşüktür.

struct Product: Comparable {
    var name: String
    var price: Double
    
    // Comparable protokolü için gerekli olan karşılaştırma fonksiyonu
    static func < (lhs: Product, rhs: Product) -> Bool {
        // Örneğin, fiyata göre karşılaştırma yapalım
        return lhs.price < rhs.price
    }
}

// Örnek kullanım
let product1 = Product(name: "Laptop", price: 1200.0)
let product2 = Product(name: "Smartphone", price: 800.0)

if product1 < product2 {
    print("\(product1.name) daha ucuzdur \(product2.name)")
} else {
    print("\(product1.name) daha pahalıdır veya aynı fiyat seviyesindedir \(product2.name)")
}

Product örneği üzerinden bir liste oluşturup sorted() fonksiyonu ile sıralamayı yapabiliriz.

import Foundation

struct Product: Identifiable, Comparable {
    var id = UUID()
    var name: String
    var price: Double
    
    // Comparable protokolü için gerekli olan karşılaştırma fonksiyonu
    static func < (lhs: Product, rhs: Product) -> Bool {
        // Örneğin, fiyata göre karşılaştırma yapalım
        return lhs.price < rhs.price
    }
}
import SwiftUI

struct ContentView: View {
    // Ürün listesi
    let productList = [
        Product(name: "Laptop", price: 1200.0),
        Product(name: "Smartphone", price: 800.0),
        Product(name: "Tablet", price: 600.0),
        Product(name: "Headphones", price: 150.0)
    ]

    var body: some View {
        NavigationStack{
            List(productList.sorted()) { product in
                Text("\(product.name), Fiyat: \(product.price)")
            }
            .navigationTitle("Ürün Listesi")
        }
    }
}

Bu örnekte, List içinde productList.sorted() ifadesini kullanarak ürünleri fiyata göre sıraladık. Sıralama, Product struct’ında tanımlanan Comparable protokolüne göre otomatik olarak gerçekleşir.

Yorum yapın