function-return
در جلسه‌ی گذشته با مفاهیم پایه ای ساخت متدها همچنین با ساخت متدهای ساده و متدهایی دارای مقدار ورودی آشنا شدید، در این جلسه با متدهایی سروکار خواهیم داشت که میتوانند علاوه بر داشتن مقدار ورودی مشخص، خروجی محاسباتی را نیز برای سیستم،پردازش و ارسال کند، پس در ادامه همراه باشید 
اگر خاطرتان باشد، شکل کلی یک متد ساده به صورت زیر بود:
func Name() {
    // Some Code for Execute
}
همچنین نوع پیچیده تری از متدها را داریم که میتوانند مقداری را برای انجام محاسبات از ورودی دریافت کنند، نوع ورودی از ابتدا و در زمان ساخت متد مشخص میشود.ساختار این نوع از متدها را در زیر مشاهده میکنید:
func Name (Input:String) {
    // Some Code for Execute with Input
}
نکته: در ادامه به نوع ساده متدها (نوع اول)، به متد دارای مقدار ورودی (نوع دوم) ، همچنین به نوع پیچیده تر آنها که در ادامه فراخواهید گرفت (نوع سوم) میگوئیم.
در زیر نمونه‌ی یک متد نوع سوم را مشاهده میکنید:
func Name (Input:String) -> Int {
// some code to execute
return 0
}
در این مثال همانند متدهای قبل، ابتدا از عبارت func برای ایجاد متد استفاده کردیم و پس از آن نام متد را مینویسیم،در این اینجا عبارت Name همان نام متد است، درون پرانتز عبارت ورودی و همچنین نوع آنرا مینویسیم، در این مثال متغیری به نام Input از نوع رشته String داریم،و برای مشخص کردن نوع خروجی حتما باید از عبارت ترکیبی <- استفاده کنید،و پس از آن نوع خروجی متد را همچون قبل مینویسیم، در این متد ورودی از رشته ها و خروجی از اعداد را داریم،در بدنه، کدهای متد را نوشته و حتما باید در پایان متدهای نوع سوم از عبارت return برای ارسال خروجی استفاده کنیم(در مثال بعد بیشتر متوجه خواهید شد) اما قبل از آن به این مورد توجه کنید، زمانی که متد را میسازید اگر حتی کدهای مورد نظر را هم برای این متد ننوشته اید، باید عبارت return را در پایان بنویسید، در غیر این صورت با خطای کامپایلر مواجه میشوید، در این مثال چون خروجی متد ساخته شده عبارتی عددی(Int) است، عبارت return 0 را نوشته ایم.
به مثال زیر توجه کنید :
٭ تمامی کدها و مثال ها را می توانید در بخش playground تست کنید.
func Name (Input:String) -> Int {
    
    var output:Int = 0
    if Input == "She"{
        output = 1
    }else if Input == "He"{
        output = 2
    }
    
    return output
}

در این مثال متدی همچون پاراگراف بالا نوشته ایم و این متد قرار است مقدار رشته‌ای، تحت عنوان Input را گرفته و خروجی از نوع عددی را محاسبه و ارسال کند، از آنجایی که برخلاف مقدار ورودی، برای خروجی نامی درنظر گرفته نشده، برای زیبایی و سامان بیشتر کدها در ابتدا متغیری از نوع Int و با نام output ساخته ایم، چرا که در انتهای برنامه مقدار درونی این متغیر را return کنیم.

برای کدهای بعدی توضیح چندانی نمیدهیم،چرا که میتوانید کاملا کدها را خوانده و متوجه شوید،صرفا برای درک مطلب، این دستورات یعنی آنکه: اگر مقدار ورودی، عبارت "she" بود خروجی مقدار ۱ را برگرداند و اگر مقدار ورودی، عبارت "He" بود خروجی مقدار عددی ۲ را ارسال کند، و در آخر این عدد درون متغیر output ذخیره گشته و با عبارت return مقدار این متغیر را به خارج از متد ارسال میکنیم،همچون قبل و متدهای پیشین میتوانیم برای مشاهده‌ی کارکرد این متد، پس از پایان متد و در زیر آن, نام متد را نوشته و یکی از ورودی های مورد نظر را ارسال کنیم("She"یا"He")،در تصویر زیر مشاهده میکنید:

(برای مشاهده تصویر در اندازه واقعی روی آن کلیک کنید)

return-methodsنکته: متدها میتوانند بیش از یک ورودی و یا خروجی داشته باشند،در زمان ساخت، میتوان تعیین کرد یک متد ۲ و یا چند ورودی را دریافت کند و حتی میتواند چندین خروجی با انواع مختلف را ارسال کند، به مثال زیر توجه کنید:

func area(X:Float , Y:Float) -> String {
    
    var message:String = "area is \(X*Y)"
    return message
}
همانطور که گفته شد در این مثال، متد ۲ مقدار ورودی را دریافت میکند و تنها یک خروجی رشته‌ای را برمیگرداند، برای درک بهتر، این مثال را در محیط playground نوشته و پس از صدا زدن نام متد، مقدار اعشاری X و Y را به آن پاس دهید و خروجی را مشاهده کنید.

چالش: متد بالا را طوری تغییر دهید که بتواند خروجی دیگری را نیز ارسال کند، مطلوب است خروجی خواسته شده محاسبه‌ی عبارت ریاضی 2/(X*Y) باشد.

  • یادآوری:دوستان عزیزی که ابتدا پست های جدید رو مطالعه میکنند،توجه کنید که برای دیدن پست های قبلی و ابتدای این دوره آموزشی، باید به پایینی ترین پست مراجعه کنید و به صفحات قبل برگردید،چرا که ترتیب کلاسها بسیار حائز اهمیت است .