<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>پست‌های انتشارات آموزش برنامه نویسی iOS</title>
        <link>https://virgool.io/SwiftLearning/feed</link>
        <description>آموزش های برنامه نویسی iOS به صورت کاملا رایگان</description>
        <language>fa</language>
        <pubDate>2026-06-16 22:52:08</pubDate>
        <image>
            <url>https://files.virgool.io/upload/publication/znpgotqzgzuy/ymh4ad.png</url>
            <title>آموزش برنامه نویسی iOS</title>
            <link>https://virgool.io/SwiftLearning</link>
        </image>

                    <item>
                <title>آموزش ساخت انیمشن زنجیره ای در سوئیفت</title>
                <link>https://virgool.io/SwiftLearning/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B3%D8%A7%D8%AE%D8%AA-%D8%A7%D9%86%DB%8C%D9%85%D8%B4%D9%86-%D8%B2%D9%86%D8%AC%DB%8C%D8%B1%D9%87-%D8%A7%DB%8C-%D8%AF%D8%B1-%D8%B3%D9%88%D8%A6%DB%8C%D9%81%D8%AA-onaztklvqzl4</link>
                <description>مقدمهبا سلام به همه شما برنامه نویسان عزیز :)امروز قرار هستش با ساخت انیمشن زنجیره ای آشنا بشیم که کمک میکنه تا انیمیشن های چند بخشی بسازیم .شروع مطمئنا شما با ساخت انیمشن های تک بخشی آشنا هستید اما تا به حال فکر کرده اید که اگر بخواهید چند انیمیشن را یکی پس از دیگری اجرا کنید چگونه میشود ؟ما در حالت معمولی اگر بخواهیم به یک view انیمشن بدهیم به اینصورت مینویسیم .UIView.animate(withDuration: 1) {
// Animate your views here
view.frame.origin.x += 1
}در این کد ما فقط یک انیمشن اجرا کردیم و آن هم جابجا کردن فریم ویو به اندازه یک واحد اما ما میخواهیم بعد از جابجا شدن ویو رنگ آن نیز سبز شود :| راه حلی که به ذهن اکثر آدمای تازه کار میرسه احتمالا این هستش UIView.animate(withDuration: 1, animations: { 
view.frame.origin.x += 200
}, completion: { _ in   
UIView.animate(withDuration: 1, animations: {  
view.backgroundColor = .green 
       })
})کاری که کد بالا انجام میده این هستش که در compeletion متود animate دوباره یک انیمشن جدید ایجاد کرده است و رنگ ویو بعد از جابجایی سبز میشود . اما اگر چند حالت دیگر داشته باشیم چطور !!!!خب احتمالا چهره مدیرتون بعد از دیدن کد شما این شکلی میشه :))استفاده از UIView’s animateKeyframes راه حل ما هستش در iOS 7 اپل متودی به نام animateKeyframes معرفی کرد تا بتوان قطعه های انیمشن ساختدر واقع شما با این متود انیمیشن های خود را فریم به فریم میسازید درست مثل  انیمیشن های قدیمی  که فریم به فریم نقاشی میشدند و بعد از آن به هم متصل میشدند پیاده سازی این متود نیازمند زمان انیمشن و تاخیر هستش : حالا وقت این هستش که ما انیمشن های خودمان را اضافه کنیم برای این کار از متود addKeyframe است استفاده میکنیم این متود سه پارامتر اجباری دارد که عبارتند از :زمان شروع فریم (frameStartTime)این پارامتر مشخص میکند که کی قرار هست فریم انیمشن شما اجرا شود ؟ توجه داشته باشید که عدد آن باید بین ۰ تا ۱ باشد. به این معنی که اگر ما زمان انیمشن خود ۵ ثانیه میباشد و میخواهیم این فریم بعد از ۲ ثانیه اجرا شود زمان شروع ما 2/5 (0.4) میشود  زمان فریم (frameDuration)این پارامتر مشخص میکند که فریم شما چقدر باید دوام داشته باشد که این عدد نیز باید بین بازه ۰ تا ۱ باشد اگر مدت زمان انیمشن ما ۵ ثانیه میباشد و میخواهیم ۱ ثانیه دوام داشته باشد ۱/۵ (۰.۲) میشود انیمیشن (animation)این همان بلاک انیمشن هست که شما باید در آن کاری که میخواهید انجام بدهید را بنویسید حالا برای این که انیمشن خود را با keyfame بسازیم باید متود addKeyframe را داخل آن صدا کنیم تا فریم های انیمیشن خود را اضافه کنیم .بعد از استفاده کد نهایی ما به اینصورت میشود :در آخر اگر سوالی داشتید میتونید با استفاده از ایمیل با من در تماس باشید .ایمیل من پایان </description>
                <category>آموزش برنامه نویسی iOS</category>
                <author>صادق بیطرفان</author>
                <pubDate>Fri, 27 Sep 2019 22:24:44 +0330</pubDate>
            </item>
                    <item>
                <title>انتخاب عکس از گالری در سوئیفت</title>
                <link>https://virgool.io/SwiftLearning/%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%D8%B9%DA%A9%D8%B3-%D8%A7%D8%B2-%DA%AF%D8%A7%D9%84%D8%B1%DB%8C-%D8%AF%D8%B1-%D8%B3%D9%88%D8%A6%DB%8C%D9%81%D8%AA-thwwck7pxylh</link>
                <description>مقدمهامروز قرار هست توضیح بدهیم که چگونه عکس را از گالری بگیریم و آن را نمایش بدهیم . شروع با استفاده از سوئیفت ۵ این آموزش را کامل میکنیم ابتدا یک پروژه ایجاد میکنیم و در آن یک UIImage و یک دکمه قرار میدهیم ، کار به اینصورت هست که با استفاده از دکمه به صفحه گالری میرویم و پس از انتخاب ، عکس را در UIImageView قرار میدهیم . در نهایت المنت ها را به کد متصل میکنیم تصویر نهایی این قسمت به صورت زیر میباشد .کمی کد بزنیم ? دو پروتوکل UIImagePickerControllerDelegate , UINavigationControllerDelegate را confirm میکنیم یک Instance از کلاس UIImagePickerController میسازیم let imagePicker = UIImagePickerController()در داخل بدنه دکمه گالری کد زیر را مینویسیم  self.picker.delegate = self
self.picker.sourceType = .photoLibrary
self.present(picker, animated: true, completion: nil)در خط اول باید بگویید به picker که در کدام صفحه گالری را نشان دهد (البته این توضیح کاملی در مورد Delegate نیست و بعدا آن را مفصلا در مقاله ای دیگر توضیح خواهم داد )خط دوم sourceType در واقع یک enum میباشد که سه حالت photo library , saved photo album,camera را دارد savedPhotoAlbum : فقط البوم اصلی گالری را نشان میدهد photolibrary : تمام البوم های موجود در گالری را نشان میدهدcamera : به دوربین متصل میشود منظور از البوم اصلی Camera Roll هستشدر خط سوم هم با استفاده از present کلاس UIImagePickerController را نشان میدهیم (در مقاله های قبلی هم گفته ام معمولا کلاس هایی که به Controller ختم میشوند باید present شوند مثل UIAlertController)  ما اگر روی عکسی کلیک کنیم عملا هیچ اتفاقی نمی افتد چون تعریف نکرده ایم که چه بشود متود didFinishPickingMediaWithInfo را که داخل پروتوکل UIImagePickerControllerDelegate هست را صدا میزنیم ، ما از این متود زمانی استفاده منیم که یک مدیا از گالری انتخاب شده و بعد از آن با آن عملیاتی انجام دهیم میبینید که در این متود info یک دیکشنری میباشد که key آن از جنس UIImagePickerController.InfoKey میباشد و Value آن از جنس ‌Any است حالا داخل بدنه این متود کد زیر را مینویسیمif let originalImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage{
self.imageV.image = originalImage
}
dismiss(animated: true, completion: nil)در خط اول ابتدا با استفاده از همان دیکشنری info کلید  UIImagePickerController.InfoKey.originalImage را وارد میکنیم این کلید در واقع اورجینال عکس انتخاب شده را میدهد ، مثلا شما اگر اجازه crop بدهید و کاربر عکس را . crop کند با این کلید بازهم عکس اوریجینال به شما برمیگرداند کلید های دیگر سپس آن را به عکس cast میکنیم شاید برای شما سوال باشد که if let چیست ما از if let زمانی استفاده میکنیم مطمئن شویم که مقدار آن متغیر هیچ وقت nil نمیشود چه به درد میخوره ؟در همین مثال ممکن است مدیا ای که ما انتخاب میکنیم نتواند به UIImage تبدیل شود در اینصورت به ما nil برمیگرداند و اپ ما کرش میکند ، پس سعی کنید در مواقع اینچنین حتما از nil نبودن مطمئن شوید در آخر گالری را dismis میکنیم به این معنی که صفحه گالری کنار برود به صفحه ی اصلی برگردد نکته مهم : حتما در plist  این کلید ها را وارد کنید ، این برای اجازه دسترسی به گالری و دوربین است&lt;key&gt;NSCameraUsageDescription&lt;/key&gt;
&lt;string&gt;This app wants to take pictures.&lt;/string&gt;&lt;key&gt;NSPhotoLibraryUsageDescription&lt;/key&gt;
&lt;string&gt;This app wants to use your photos.&lt;/string&gt;برای اضافه کردن به plist روی آن کلیک راست کنید و گزینه open as source code را بزنید و داخل دیکشنری کد بالا را پیست کنید پروژه نهایی را از گیتهاب دریافت کنیدhttps://github.com/sadeghgoo/imagepickerپایان </description>
                <category>آموزش برنامه نویسی iOS</category>
                <author>صادق بیطرفان</author>
                <pubDate>Mon, 29 Jul 2019 13:52:08 +0430</pubDate>
            </item>
                    <item>
                <title>توابع Variadic در سوئیفت</title>
                <link>https://virgool.io/SwiftLearning/%D8%AA%D9%88%D8%A7%D8%A8%D8%B9-variadic-%D8%AF%D8%B1-%D8%B3%D9%88%D8%A6%DB%8C%D9%81%D8%AA-pqgduj8pdaqv</link>
                <description>مقدمه در این مقاله قرار هست توضیح بدیم که این گونه از توابع چگونه عمل میکنند شروع بعضی از توابع variadic هستند به این معنی که میتوانند یک پارامتر میتواند بینهایت پارامتر از جنس خود را بپذیرد یک مثال : دقیقا مشابه تابع print که شما هر چند تا پارامتر داشته باشید میتونید بهش پاس بدید و آنها را با با comma (  ,   ) جدا میکنید و آن هم برای شما هر کدام را با فاصله چاپ میکند به کد زیر توجه کنید print(&amp;quothello&amp;quot,&amp;quotIm here&amp;quot,&amp;quotGames&amp;quot)خروجی کد بالا hello im here Gamesاما ما چطور میتوانیم همچین کاری انجام دهیم یک راه بیسیک وجود دارد ، که پارامتر تابع  یک آرایه بگیرید( که رفتار حرفه ای نیست )اما راه دوم استفاده از مدل نوشتاری ...Type مثلا ...String . خب String یک رشته میگیرد اما ...String میتواند چند رشته بگیرد، شاید هزاران رشته !!پارامتر Variadic را سوئیفت به یک آرایه تبدیل میکند و شما میتوانید در آن Iterate یا همان پیمایش کنیدحالا بیاید تابعی با پارامتر Variadic بسازیم  func square(numbers: Int...) {
    for number in numbers {
    print(&amp;quot\(number) squared is \(number * number)&amp;quot)       }
}پارامتر number در اینجا میتواند بیش از یک پارامتر بگیرد در داخل بدنه تابع یک حلقه وجود دارد که در numbers پیمایش میکند و آن را به توان دو میرساند و در آخر چاپ میکند نحوه ورودی دادن به اینگونه توابعsquare(numbers: 1, 2, 3, 4, 5)خروجی1 squared is 12 squared is 43 squared is 94 squared is 165 squared is 25فراموش نکنید ورودی ها را با comma جدا کنید پایان  </description>
                <category>آموزش برنامه نویسی iOS</category>
                <author>صادق بیطرفان</author>
                <pubDate>Sat, 27 Jul 2019 01:47:10 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش ساخت Static Tableview در سوئیفت</title>
                <link>https://virgool.io/SwiftLearning/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B3%D8%A7%D8%AE%D8%AA-static-tableview-%D8%AF%D8%B1-%D8%B3%D9%88%D8%A6%DB%8C%D9%81%D8%AA-xz0wdeehyaax</link>
                <description>مقدمه امروز قرار هست در مورد ساخت Static Tableview یا همان تیبل ویو ایستا صحبت کنیم #کپی رایتهرگونه کپی برداری از این مطلب بدون ذکر نام نویسنده شرعا حرام بوده و در صورت مشاهده چنین موردی از مراجع قضایی پیگیری میکنیمشروع به عکس بالا توجه کنید ۱) چه موقع از تیبل ویو استاتیک استفاده میکنیم ؟۲) فرقی هم با تیبل ویو داینامیک داره ؟پ ۱ ) استفاده های مختلفی داره اما یکی از کاربردها ی آن برای قسمت تنظیمات اپلیکیشن میباشد . پ ۲ ) بله همانطور که از اسم آن مشخص هست داینامیک یعنی متحرک و حالت پویا و غیر ثابت دارد اما استاتیک ساکن است و تغییری نمیکند .شروعتوجه : تیبل ویو استاتیک فقط در UITableViewController  ساخته میشود نه UITableview ابتدا در استوری برد یک UITabelviewController میسازیم دکمه ترکیبی Command + n  پنجره زیر را برای شما باز میکند  اما نکته مهم : شما الان یک TabelviewController دارید اما اگر اپ را اجرا کنید یک صفحه سیاه به شما نشان داده میشود چرا ؟ دلیل این است که شما انتخاب نکردید که initialViewController شما چیست ، یعنی مشخص نکردید که چه صفحه ای در ابتدا قرار است پرزنت شود برای فعال کردن VC کافیه به تب Attribiutes Inspector بروید و چک باکس is initial View Controller را فعال کنید .حالا اگر اپ را اجرا کنید دیگر آن صفحه مشکی را نمیبینید یک راه دیگه برای initial ViewController به Appdelegate بروید و در متود didFinishLaunchingWithOptions کد زیر را اضافه کنید کافیه در withIdentifier نام کلاس VC خود را بنویسید  حالا وقتشه که Cell های تیبدل ویو را بسازیم روی تیبل ویو کلیک کنید سپس Content را در تب Attribiutes Inspector به Static Cells تغییر دهید اگر میخواهید ظاهر زیباتری داشته باشید کافیه Style را به Grouped تغیر دهید تیبل ویو دو بخش دارد یکی به نام Row و یکی به نام Section که row در واقع زیر مجموعه Section هست و Section مانند دسته بندی عمل میکند یک مثال : فرض کنید شما در سبد خریدتان یک سیب یک هویج و یک عدد سبزی جعفری دارید !در اینجا سبد خرید تیبل ویو شما و خرید ها شما  محتویات تیبل ویو شما میباشد اما ما میخواهیم سبد خرید خود را دسته بندی کنیم پس سبزیجات و صیفیجات و میوه ها را دسته بندی میکنیم ،این سه دسته بندی Section های شما و زیر مجموعه های آنها Row های شما میباشدحالا همین مثال را میخوایم در تیبل ویو اجرا کنیم ابتدا section ها را میسازیمدر همان تب Section را به ۳ تغییر دهید برای عنوان دادن به Section ها روی آنها کلیک کنید و در Header عنوان خود را وارد کنید در همین تب ، row را میبینید که با اضافه کردن آن ردیف به شما اضافه میشود تصویر نهایی این قسمتحالا کمی عکس و نوشته به تیبل ویو اضافه میکنیم اضافه کردن عکساضافه کردن لیبل
 ظاهر کلی اپ به اینصورت میباشد تصویر نهایی چگونه عکس به پروژه اضافه کنیم ؟کافیه وارد Assets.xcassets بشوید سپس در سمت چپ کلیک راست کرده و import را انتخاب کنید مسیر عکس تکی یا فولدر را انتخاب کنید در نهایت به پروژه شما اضافه میشود Assets.xcassets نکته : چون تیبل ویو ما از نوع استاتیک هست لازم نیست از طریق کد به UIImageView ها عکس بدهیم به راحتی میتوانید با انتخاب عکس و نام عکس آن را در ImageView جایگذاری کرد  در نهایت برای هر لیبل اسمی انتخاب کنید و عکسها را کامل کنید کار تمام است پروژه نهایی را از گیت هاب دریافت کنید https://github.com/sadeghgoo/StaticTableviewپایان</description>
                <category>آموزش برنامه نویسی iOS</category>
                <author>صادق بیطرفان</author>
                <pubDate>Fri, 26 Jul 2019 15:45:31 +0430</pubDate>
            </item>
                    <item>
                <title>ساخت پروفایل Webclip در چند ثانیه</title>
                <link>https://virgool.io/SwiftLearning/%D8%B3%D8%A7%D8%AE%D8%AA-%D9%BE%D8%B1%D9%88%D9%81%D8%A7%DB%8C%D9%84-webclip-%D8%AF%D8%B1-%DA%86%D9%86%D8%AF-%D8%AB%D8%A7%D9%86%DB%8C%D9%87-itzz2wviz6d6</link>
                <description>مقدمهامروز میخوایم در مورد ساخت برنامه های وب کلیپ صحبت کنیم که به راحتی باچند کلیک میتونید آن را بسازید و در اختیار کاربر قرار بدید #کپی رایتهرگونه کپی برداری از این مطلب بدون ذکر نام نویسنده شرعا حرام بوده و در صورت مشاهده چنین موردی از مراجع قضایی پیگیری میکنیمApple Configurator 2 پروفایل WebClip چیست ؟قبل از هرچیزی باید بگیم webclip چیست ؟ وب کلیپ دقیقا مشابه webview هستش که در اپلیکیشن ها ایجاد میکنیم و url به آن میدهیم و آن را در صفحه ای لود میکند و به ما  نشان میدهد اما پروفایل وب کلیپ چیست ؟ پروفایل وب کلیپ با فرمت MOBILEPROVISION هستش که  وقتی نصب میشوند دقیقا در مسیر پروفایل های اینترپرایز ذخیره میشوند خب من اپلیکیشن وب ویو بسازم که بهتره ؟قسمت جذاب ماجرا اینجاست که شما یک اپلیکیشن وب ویو میسازید بدون اینکه اصلا وارد ایکس کد شوید و بدون اینکه بابت خروجی گرفتن از آن هزینه ای پرداخت کنید چه جوری ؟اپلیکیشن Apple Configurator 2 اینکار رو برای شما انجام میدهد کافیست آن را از اپ استور دریافت کنید البته ساخت وب کلیپ یکی از کارهای این برنامه هستش کاربرد هایی نظیر ساخت پروفایل Resterictions , Passcode,WiFi ,Font و .... دارد لینک دانلود:   Apple Configurator 2 شروعبعد از باز کردن برنامه شما چنین صفحه ای را خواهید دید از نوار ابزار File &gt; New Profile را انتخاب کنید این صفحه پروفایل های شماست که بسته به نیازتون میتونید از هرکدوم استفاده کنید اما در همه این پروفایل های حتما باید قسمت General تکمیل بشه Name :نام پروفایل شما identifier: یو دی ای دی مک شما هست که به طور خودکار پر میشود Organization : نام سازمان Description : توضیحات عمومی پروفایل Consent Message : پیامی که در هنگام نصب پروفایل به کاربر نشان داده میشود Security : اجازه دهد که کاربر پروفایل را پاک کند پیشنهاد میشود همیشه روی همین گزینه باشد Automatically Remove Profile : میتونید زمان بندی کنید که چه زمانی پروفایل پاک شود بعد از کامل کردن مواد بالا نوبت به ساخت پروفایل وب کلیپ میرسه به سمت پایین اسکرول کنید و webclip را انتخاب کنید دکمه configure را بزنید Label :عنوان اپلیکیشن شما URL : آدرس وب سایت Removable : قابلیت پاک کردن اپلیکیشن Icon : ایکون اپلیکیشن precomposed Icon : کاهش جلوه های ایکون FullScreen : تمام صفحه کار تمام است کافیست پروفایل را ذخیره کنید و آن را در هاست یا فضاهای دیگر آپلود کنید و لینک آن را در اختیار کاربران قرار دهید پایان</description>
                <category>آموزش برنامه نویسی iOS</category>
                <author>صادق بیطرفان</author>
                <pubDate>Sun, 21 Jul 2019 16:43:09 +0430</pubDate>
            </item>
                    <item>
                <title>توابع تو در تو یا nested function  در سوئیفت</title>
                <link>https://virgool.io/SwiftLearning/%D8%AA%D9%88%D8%A7%D8%A8%D8%B9-%D8%AA%D9%88-%D8%AF%D8%B1-%D8%AA%D9%88-%DB%8C%D8%A7-nested-function-%D8%AF%D8%B1-%D8%B3%D9%88%D8%A6%DB%8C%D9%81%D8%AA-amwe9l6nrzfq</link>
                <description>مقدمهما امروز در این مقاله توضیحی در مورد توابع تو در تو یا nested function  خواهیم دادتوابع تو در تو #کپی رایتهرگونه کپی برداری از این مطلب بدون ذکر نام نویسنده شرعا حرام بوده و در صورت مشاهده چنین موردی از مراجع قضایی پیگیری میکنیممدل نوشتاری (syntax) این توابعfunc someFunc(){     
     //statement        
     func anotherFunc(){     
      }
      anotherFunc()  
  }در بالا تابع خارجی را میبینیم (someFunc) که در درون آن تابع anotherFunc قرار دارد لازم به ذکر است که تابع درونی در خارج از بدنه someFunc را نمیتوان call کرد مثال - ۱ تابع تو در تو بدون بازگشت مقداری func outputMessage(_ message:String){
        func greeting(){
        print(&quot;Hello! \(message)&quot;)
        }
        greeting()
   }
outputMesaage(&quot;sadegh&quot;)
خروجی کد بالا به صورت زیر است Hello! sadeghدر تابع outputMessage پارامتر message از جنس string میباشد پس از پر کردن آن، برنامه تابع greeting را صدا میکند و تابع greeting نیز بعد از Hello! پارامتر تابع خارجی را در آن جایگذاری میکند  توجه : شما نمیتوانید تابع greeting را خاج از بدنه تابع outputMessage صدا کنید به توضیحات توجه کنید ما وقتی میخواهیم تابعی بسازیم اون رو با کلمه func مینویسیم و اگر لازم باشید مقدار بازگشتی و پارامتر به آن میدهیم به این تابع نگاه کنید func multiplication(number:Int) -&gt; Int {
return number*2
} مدل نوشتاری تابع بالا به اینصورت هستش (Int)-&gt;(Int)حالا تابعی مینویسیم که دو پارامتر بگیرد و یک عدد برگرداند (Int,Int)-&gt;(Int)فکر میکنم با این مدل نوشتاری آشنا شدید ، حالا به مثال پایین توجه کنید  مثال - ۲ تابع تو در تو با پارامتر و بازگشت مقدار func operate(_ symbol:String) -&gt; (Int,Int) -&gt; (Int){
func plus(num1:Int,num2:Int)-&gt;Int{
return num1 + num2
}
func subtraction(num1:Int,num2:Int) -&gt; Int{
return num2 - num1
}
let operation = symbol == &quot;+&quot; ? plus : subtraction
return operation
}
let op = operate(&quot;-&quot;)
let rea = op(2, 7)
print(rea)اگر نگاهی به تابع بندازیم تابع operate را میبینیم که یک پارامتر دارد از جنس String اما به مقدار بازگشتی آن توجه کنید در واقع مقدار بازگشتی آن یه تابع است که دو پارامتر از جنس Int دارد و به ما یک Int برمیگرداند یعنی عملا در خط اول ما دو تابع با شکل های نوشتاری متفاوت میبینیمحالا دو تابع جمع و تفریق  که هر دوی این توابع در ورودی خود دو عدد میگیرند یک Int برمیگردانند اما شاید در کد بالا یک چیز جدید دیده باشید و آن هم این استlet operation = symbol == &quot;+&quot; ? plus : subtraction کد بالا را TernaryOperator میگویند دقیقا مانند دستور شرطی if هست اما مدل کوتاه تر آن هست در این کد میگوییم اگر symol برابر &quot;+&quot;  بود ،تابع plus را صدا کن و مقدارش را در operation بریز  ،اگر غیر از این بود تابع subtraction را صدا کن و مقدارش را در operation بریز مدل نوشتاری همچین دستور شرطی چگونه است  ؟ به کد زیر دقت کنید let res = اگر شرط درست نبود : اگر شرط درست بود  ?  مقدار اما شاید برای شما سوال پیش بیاید که چرا در کد بالا توابع بدون پارامتر هاشون صدا شدن ، سوال خوبی است جواب : چون تابع بیرونی (operate) یک تابع برمیگرداند که دقیقا باید مقدار خروجی تابع بیرونی با پارامتر و خروجی تابع درونی یکی باشه  البته شما به غیر از مدل صدا کردن بالا به این صورت هم میتونید صدا کنید let operation = symbol == &quot;+&quot; ? plus(num1:num2:) : subtraction(num1:num2: )به بحث برمیگردیمlet operation = symbol == &quot;+&quot; ? plus : subtraction 
return operation  حالا ما operation را برمیگردانیم که از جنس زیر هستش(Int,Int)-&gt;(Int)حالا وقته صدا کردن تابع و کار با آن است let op = operate(&quot;+&quot;)let rea = op(2, 7)print(rea) متغیری به نام op تعریف میکنیم ، حالا operate را صدا میزنیم و پارامتر آن را پر میکینیم ، اگر یادتون باشه operate تابع (Int,Int)-&gt;(Int) را برمیگرداند که همین تابع داخل op ریخته میشه ، بعد از آن متغیری به نام rea میسازیم و در آ تابع op که گفتم بالا از جنس چی هست رو مقدار میدهیم op هم یک . Int برمیگرداند و داخل rea  میریزد و در آخر ما آن را چاپ میکنیم سخنی با برنامه نویسان این رو به دوستان عزیز بگم که هر اگر هرکدوم از این بحث های برنامه نویسی رو متوجه نشدید اصلا نا امید نشید شما حتما یکی از بهترین برنامه نویس ها هستید فقط باید هوشمند و مکرر تلاش کنید </description>
                <category>آموزش برنامه نویسی iOS</category>
                <author>صادق بیطرفان</author>
                <pubDate>Sun, 21 Jul 2019 11:51:15 +0430</pubDate>
            </item>
            </channel>
</rss>