skip to content
Logo Saturngod

Operator Overloading

/ 1 min read

Swift မှာ ပေါင်းနှုတ် မြှောက်စား operator တွေကို overloading လုပ်ပြီး ရေးလို့ရပါတယ်။​ ဥပမာ struct နှစ် ခု ပေါင်းမယ် ဆိုရင် သမာရိုးကျ ပေါင်းလို့ မရပါဘူး။ ဒါပေမယ့် operator overloading ကြောင့် ပေါင်းလို့ ရအောင် ထပ်ဖြည့်ပြီး​ရေးလို့ရပါတယ်။

struct Money {
let value: Int
let currencyCode: String
static func + (left: Money, right: Money) -> Money {
return Money(value: left.value + right.value,currencyCode: left.currencyCode)
}
}
//Money(value: 30, currencyCode: "USD")
print(Money(value: 10, currencyCode: "USD") + Money(value: 20, currencyCode: "USD"))

Operator Overloading မှာ prefix, postfix , infix ဆိုပြီး ရှိပါတယ်။ + ကတော့ infix ပါ။ prefix, postfix တွေ အတွက် func မတိုင်ခင်မှာ prefix လား postfix လားဆိုပြီး ကြေငြာပေးဖို့ လိုပါတယ်။

import Foundation
struct Money {
let value: Int
let currencyCode: String
static func + (left: Money, right: Money) -> Money {
return Money(value: left.value + right.value,currencyCode: left.currencyCode)
}
static postfix func ++ (money: Money) -> Money {
return Money(value: money.value + 1, currencyCode: money.currencyCode)
}
static prefix func ++ (money: Money) -> Money {
return Money(value: money.value + 1, currencyCode: money.currencyCode)
}
}
print(Money(value: 10, currencyCode: "USD") + Money(value: 20, currencyCode: "USD")) //infix
print(Money(value: 10, currencyCode: "USD")++) //postfix
print(++Money(value: 10, currencyCode: "USD")) //prefix