Extension در سوئیفت چیست؟ و چه کاربردی دارد؟

زمان مطالعه : ۴ دقیقه
آخرین بروزرسانی : ۰۷ اسفند ۱۴۰۰
مفهوم extension در زبان برنامه نویسی سوئیفت

Extension جزوه مباحثی هست که یادگیری آن اجباری نیست، اما همه پس از یادگیری آن عاشق آن میشوند! پس حتما این مقاله را با دقت بخوانید که یادگیری Extension برنامه نویسی را برای شما آسان تر خواهد کرد.

معنی Extension در سوئیفت

اکستنشن در واقع به معنای گسترش دادن و اضافه کردن یک سری قابلیت ها و ویژگی ها هست، یعنی مثلا به کلاس مربوط به String ها تابعی اضافه کنیم که امکان محاسبه تعداد حرف های یک کلمه را داشته باشد (البته این بصورت پیش فرض وجود دارد)، یک extension را میتوان به موارد زیر اضافه کرد:

  1. کلاس ها
  2. استراکچر ها
  3. پروتکل ها
  4. انومریشن ها

تعریف Extension در Swift

برای این کار از کلمه کلیدی extension استفاده میکنیم و سپس آن کلاس یا استراکچر یا ... که میخواهیم به آن ویژگی یا عملکردی جدید اضافه کنیم را مینویسیم، در دو مثال بعدی میخواهیم دو اکستنشن برای اعداد صحیح و رشته ها بنویسیم.

1- تعریف Extension برای Int

در این مثال میخواهیم اکستنشنی بنویسیم که عدد را ضرب در 2 کند و آن را برگرداند

extension Int {
    func double() -> Int {
        return self * 2
    }
}

let number: Int = 5
let doubleNumber = number.double()
print(doubleNumber)

خروجی:

10
توضیحات بیشتر:
  • self به متغیر مربوط به Int اشاره میکند، پس در واقع هر سری که از اکستنشن double استفاده میکنیم، عدد مورد نظر در self قرار میگیرد و بعد از ضرب شدن در دو برگردانده میشود.

2- تعریف Extension برای String

در مثال دوم میخواهیم اکستنشی برای رشته ها بنویسیم که تعداد حرف های یک رشته را همراه با یک متن چاپ کند.

extension String {
    func stringCounter() {
        let lettersCount = self.count
        print("number of letter is: \(lettersCount)")
    }
}

let str: String = "Swift"
str.stringCounter()

خروجی:

number of letter is: 5
نکته بسیار مهم!
  • امکان ذخیره کردن مستقیم مقدار درون یک متغیر را، در extension نداریم، و حتما باید یک مقدار محاسبه شود و سپس درون متغیر قرار گیرد!

مثالی برای پر کردن متغیر در Extension

extension Double {
    var castToInt: Int {
        return Int(self)
    }
}

let doubleNumber: Double = 92.48
let intNumber = doubleNumber.castToInt
print(intNumber)

خروجی:

92

این مقاله در حال بروز رسانی است و در آینده نزدیک مباحث جدید تری اضافه میشود...
میلاد خط شب
میلاد خط شب
معتقدم هر آدمی میتواند در یک زمینه ای مفید و تاثیر گذار باشد و اصولا آدم "غیر مفید" نداریم. فقط کافی است به موقع و صحیح راهنمایی شود.
پاسخ دهید


برخی از افرادی که این مقاله را پسندیدند 🥰

46