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.