رفتن به مطلب
مرجع رسمی سی‌پلاس‌پلاس ایران

پرچمداران

  1. سید محمد عباسی

    سید محمد عباسی

    کاربـــر رسمی


    • امتیاز

      1

    • تعداد ارسال ها

      45



مطالب محبوب

در حال نمایش مطالب دارای بیشترین امتیاز در یکشنبه, 20 بهمن 1398 در همه بخش ها

  1. 1 امتیاز
    آموزش زبان برنامه‌نویسی سوئیفت - جلسه هفتم مواردی که در این جلسه یاد خواهید گرفت: مجموعه‌ها ( Collections ) مجموعه‌ها در سوئیفت در واقع متغییر‌هایی هستند که بیش‌از یک مقدار را نگهداری می‌کنند و هر کدام، هم طبق عملکردی که دارد، داده‌ها را ذخیره و در اختیار برنامه‌نویس می‌گذارد. منظور از هر کدام، ۴ نوع مجموعه است که در اینجا مشاهده خواهید کرد؛ آرایه‌ ( Array ) سِت‌ ( Set ) دیکشنری ( Dictionary ) تاپِل‌ ( Tuple )‌ در جلسه‌ی قبل، با اولین مجموعه؛ یعنی آرایه‌ها به طور کامل آشنا شدید و در این جلسه با سِت‌ها (‌ Sets )‌ کامل آشنا خواهید شد. به خاطر داشته باشید که هر کدام از این مجموعه‌ها منحصر‌ به فرد عمل کرده و هیچ‌کدام شبیه هم نخواهند بود. سِت‌ها ( Sets ) چیستند؟‌ سِت‌ها کار شما را برای ذخیره کردن داده‌های غیر‌تکراری راحت می‌کنند! یعنی این‌که شما به راحتی و بدون این‌که نگران باشید چه تعداد مقادیر تکراری دارید، می‌توانید به روند توسعه پروژه‌ی خودتان ادامه دهید و مابقی کار را به این یکی نوع از مجموعه‌ها بسپارید. این در صورتی است که شما نمی‌خواهید دائما بررسی کنید که آیا داده‌های تکراری دارید یا نه و با تعریف این نوع، خیالتان آسوده خواهد شد. همچنین داده‌هایی که در این نوع به نمایش درخواهند آمد، به صورت نامنظم هستند! یعنی اینکه اگر شما مقادیر خودتان را به صورت منظم اضافه کرده باشید، خروجی آن چیزی نیست که به صورت منظم خواسته باشید. در واقع می‌توان گفت، Setها؛ داده‌های غیر‌تکراری و نامنظم را در خود نگهداری می‌کنند. برای تعریف یک Set به این صورت عمل خواهیم کرد، می‌توانیم به دو صورت عمل کنیم؛ استفاده از کلاس و تعیین نوع داده استفاده از کلاس بدون تعیین نوع داده به اولین مورد، یعنی استفاده از کلاس و تعیین نوع داده می‌پردازیم؛ پس به این صورت عمل خواهیم کرد؛ var setـvar = Set<String>() // Or any data type همانطور که مشاهده می‌کنید، ابتدا یک متغییر تعریف خواهید کرد و سپس نام کلاس Set را می‌آورید و در نهایت در بین <> نوع داده‌ی خود را مشخص می‌کنید و سپس پرانتز () را قرار می‌دهید. در حال حاضر، شما یک Set خالی خواهید داشت! چرا که هیچ داده‌ای برای آن در نظر نگرفته‌اید. برای این‌کار به شکل زیر عمل خواهیم کرد؛ var set_var = Set<String>() // Or any data type set_var.insert("www.iostream.ir") set_var.insert("www.fanoox.com") set_var.insert("Tegra CMS") set_var.insert("www.ModernCpp.ir") set_var.insert("Apple") set_var.insert("Google") set_var.insert("Apple") set_var.insert("Google") set_var.insert("Microsoft") // Iterator in the set_var for items in set_var { print("Items in the set_var collection : ", items) /* Items in the set_var collection : www.iostream.ir Items in the set_var collection : www.fanoox.com Items in the set_var collection : Tegra CMS Items in the set_var collection : www.ModernCpp.ir Items in the set_var collection : Apple Items in the set_var collection : Google Items in the set_var collection : Microsoft */ } برای این‌که بتوانیم داده‌ای یا مقداری را ذخیره کنیم، از متد insert استفاده می‌کنیم که در بالا هم مشاهده می‌کنید. اما نکته‌ای که به احتمال زیاد شما هم متوجه آن شده‌اید، این است که ما دو بار مقدار Google و Apple‌ را ذخیره کرده‌ایم! اما همان‌طور که در تعریف Set گفتیم، در خروجی فقط یک‌بار این مقادیر نمایش داده می‌شوند، حتی اگر به تعداد زیاد بخواهید داده‌ی تکراری وارد کنید! چرا که این نوع (‌ Set ) فقط مقادیر غیر‌تکراری را ذخیره خواهد کرد. تعریف دیگر آن به این صورت است؛ var setـvar : Set = [1,2,3,4,5,6,7,8,9,10] print(set_var) // Output is [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] در این مورد، شما مانند تعیین نوع برای متغییر، نام کلاس Set‌ را بعد از دو نقطه ( که به آن هم کالُن ( : )‌ گفته می‌شود ) آورده و سپس مانند یک آرایه، مقادیر و داده‌های خودتان را در بین دو قُلاب [] می‌نویسید. برای نمایش دادن آن هم کافیست که نام آن را بیاورید، همانند تعریف بالا. این نکته را به یاد داشته باشید که کامپایلر، به صورت ضمنی ( Implicit ) نوع داده را تشخیص داده و نیازی به ذکر نوع داده نخواهید داشت. ویژگی‌ها ( Properties ) و متد‌ها به دست آوردن تعداد اعضا با استفاده از ویژگی count می‌توانید به تعدا اعضای یک Set دسترسی داشته باشید؛ var set_var : Set = [1,2,3,4] print(set_var.count) // Output is 4 بررسی خالی بودن یا نبودن Set و همچنین اگر می‌خواهید خالی بودن یا نبودن را بررسی کنید، isEmpty این امکان را در اختیار شما قرار داده است؛ var set_var : Set = [1,2,3,4,5,6,7,8,9,10] if set_var.isEmpty { print("set_var is empty!") } else { print("set_var not empty") // This will run code } اضافه کردن عضو جدید در حالت عادی نمی‌توانیم به Setهای خودمان عضوی یا داده‌ای اضافه کنیم! در تعریف دوم شما دیدید که ما به صورت مستقیم این کار را انجام دادیم، اما در ادامه‌ی برنامه شاید نظرمان عضو شود و بخواهیم عضو را حذف و عضو دیگری را اضافه کنیم؛ برای این منظور از متد insert استفاده خواهیم کرد؛ var celebrities : Set = ["Steven Paul jobs", "William Henry Bill Gates lll", "Elon Reeve Musk"] celebrities.insert("Jeffrey Preston Bezos") celebrities.insert("Sergey Brin") celebrities.insert("Lawrence Lary Page") همان‌طور که مشاهده کردید، ما با استفاده از متد insert می‌توانیم عضو‌های جدیدی را اضافه کنیم. حذف یک عضو برای این کار ما از متد remove استفاده می‌کنیم؛ var celebrities : Set = ["Steven Paul jobs", "William Henry Bill Gates lll", "Elon Reeve Musk"] celebrities.remove("Steven Paul jobs") print(celebrities) // Output is ["William Henry Bill Gates lll", "Elon Reeve Musk"] این متد یک آرگومان دریافت خواهد کرد و همان عضوی است که می‌خواهید حذف شود. بررسی وجود داشتن یا نداشتن یک مقدار خاص از متد contains برای این منظور استفاده می‌کنیم؛ var celebrities : Set = ["Steven Paul jobs", "William Henry Bill Gates lll", "Elon Reeve Musk"] if celebrities.contains("Elon Reeve Musk") { print("Elon Reeve Musk is available in the celebrities") // This will run code } else { print("Elon Reeve Musk is'n available in the celebrities") } نکته متد‌های کار با Set، با خود Set اصلی کاری نداشته و بسته به متد، یک Set‌ جدید برگردانده می‌شود. گَردش در Set برای این‌که بتوانیم به تک‌تک اعضای یک Set دسترسی داشته باشیم، از حلقه‌ی for استفاده می‌کنیم، به این کار گردش می‌گویند. در جلسه‌ی قبل، توضیحی مختصر در این باره‌ داده‌ایم که می‌توانید مطالعه کنید. پس به گردش در Set به این صورت است؛ var celebrities : Set = ["Steven Paul jobs", "William Henry Bill Gates lll", "Elon Reeve Musk"] for items in celebrities { print("Celebrities : ", items) /* Celebrities : Steven Paul jobs Celebrities : William Henry Bill Gates lll Celebrities : Elon Reeve Musk */ } به همین سادگی، می‌توانید بین عضو‌های مختلف گردش کرده و پردازش‌های لازم را بنابر نیاز انجام دهید. مرتب‌سازی در حالت پیش‌فرض، نوع Set هیچ مبنایی برای مرتب‌سازی ندارد و داده‌ها را به صورت تصادفی نمایش خواهد داد؛ در صورتی که بخواهید بر اساس ترتیب داده‌ها را نمایش دهید، می‌توانید از متد sorted استفاده کنید؛ var celebrities : Set = ["Steven Paul jobs", "William Henry Bill Gates lll", "Elon Reeve Musk"] for items in celebrities.sorted { print("Sorted celebrities : ", items) /* Sorted celebrities : Elon Reeve Musk Sorted celebrities : Steven Paul jobs Sorted celebrities : William Henry Bill Gates lll */ } فقط توجه داشته باشید که این متد باید در حلقه مورد استفاده قرار گیرد. ایجاد یک Set جدید با ترکیب دو Set یا ( Union ) با استفده از متد union شما می‌توانید یک Set کاملا جدید، ایجاد کنید؛ var celebrities_some_one : Set = ["Steven Paul jobs", "William Henry Bill Gates lll", "Elon Reeve Musk"] var celebrities_two_some : Set = ["Jeffrey Preston Bezos","Sergey Brin","Lawrence Lary Page"] var celebrities_final : Set = celebrities_some_one.union(celebrities_two_some) print(celebrities_final) ذخیره یک مقدار مشترک ( Intersection ) اگر دو Set داشته باشیم و یک مقدار در هر دو یکسان باشد، متد intersection می‌تواند همه‌ی مقادیر دیگر را پاک کرده و فقط همان مقدار را در قالب یک ‌Set‌ جدیدی برگرداند؛ var numbers_one : Set = [1,6,3] var number_two : Set = [5,6,3] var number_final : Set = number_one.intersection(number_two) print(number_final) // Output is [6, 3] همان‌طور که مشاهده کردید، در خروجی مقدار 3 , 6 را خواهیم داشت، چرا که باقی مقدار تکراری نبوده و در نتیجه حذف خواهند شد. حذف مقادیر یک Set و مقادیر مشابه ( Subtracting ) اگر بخواهیم مقادیر یک Set را به طور کامل حذف کنیم و همچنین اگر مقداری تکراری وجود داشت، آن را هم حذف کرده و فقط Set اول را داشته باشیم، از متد subtracting استفاده خواهیم کرد؛ var numbers_one : Set = [1,6,3] var number_two : Set = [5,6,3] var number_final : Set = number_one.subtracting(number_two) print(number_final) // Output is [1] مشاهده می‌کنید که خروجی برابر ۱ است! چرا که Set اول فقط مقدار ۱ را دارد و مابقی مقادیر در Set اول و دوم تکرار هستن و در نهایت حذف خواهند شد. ایجاد یک Set جدید با مقادیر غیر تکراری ( SymmetricDiffernce ) در متد union شما مقادیر غیر‌تکراری را نخواهید داشت و در Set جدیدی که ساخته خواهد شد و یا به طور مستقیم در خروجی نمایش داده می‌شود، فقط یک‌بار مقادیر نمایش داده می‌شوند؛ اما با متد symmetricDifference شما مقادیر دو طرف Set را حذف خواهید کرد و فقط مقادیری که دیگر تکراری نیستند، نمایش داده می‌شود. اجازه بدهید با ذکر یک مثال، این موضوع را شفاف‌تر کنیم؛ var numbers_one : Set = [1,6,3] var number_two : Set = [5,6,3] var number_final : Set = number_one.symmetricDiffernce(number_two) print(number_final) // Output is [1,5] همان‌طور که مشاهده می‌کنید، ما مقادیر ۳ و ۶ را نخواهیم داشت! چرا که در این متد، مقادیر تکراری هر دو Set حذف خواهند شد و داده‌هایی که تکراری نیستند، در یک Set جدید ایجاد می‌شوند. امیدواریم که این جلسه مورد رضایت شما عزیزان قرار گرفته باشد.
این صفحه از پرچمداران بر اساس منطقه زمانی تهران/GMT+03:30 می باشد
×
×
  • جدید...