where in Swift
/ 2 min read
Table of Contents
Swift မှာ where ကို နောက်ပိုင်း အသုံးဖြစ်လာတယ်။ တချို့ case လေးတွေမှာ where က အသုံးဝင်တယ်။
Switch
Where မပါပဲ ရေးမယ် ဆိုရင်
func calculateSize(type: PageType, page: Int) -> Int { if type == .Category { return defaultPageSize + 1 } else if type == .Detail { if page == 1 { return defaultPageSize } else { return defaultDetailSize } }}
အဲဒီ code ကို where
သုံးလိုက်ရင်
func calculateSize(type: PageType, page: Int) -> Int { switch type { case .Category: return defaultPageSize + 1 case .Detail where page == 1: return defaultPageSize default: return defaultDetailSize } }
Loop
where
ကို loop နဲ့ လည်း သုံးနိုင်ပါတယ်။ where ကြောင့် filter မသုံး ပဲ loop မှာ filter လုပ်သွားလို့ရပါတယ်။
where မပါပဲ နဲ့ ရေးရင်
for number in categories { if number != 0 { print("\(number)") }}
where
နဲ့ တွဲသုံးရင်
for number in categories where number != 0 { print("\(number)")}
နောက်ထပ် ဥပမာ အနေနနဲ့
let numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for number in numbers where number % 2 == 0 { print(number)}
Generic
where ကို generic တွေမှာလည်း အသုံးပြုနိုင်ပါတယ်။
Element က Int ပဲ ဖြစ်ရမယ် ဆိုသည့် သဘော။
extension Array where Element == Int { func printAverageAge() { let total = reduce(0, +) let average = total / count print("Average age is \(average)") }}
let ages = [44, 30, 33, 18, 23]ages.printAverageAge()
Element က ၂ ခု က တူရမယ်။ နောက်ပြီး Equatable လည်း လုပ်လို့ရရမယ် ဆိုပြီး စစ်ထားသည့် သဘောမျိုးဆိုရင် အောက်ပါ အတိုင်းရေးနိုင်ပါတယ်။
func allItemsMatch<C1: Container, C2: Container>(_ container1: C1, _ container2: C2) -> Bool where C1.Item == C2.Item, C1.Item: Equatable { // Implementation here... // Check if items in container1 match items in container2 // ... return true // or false}