<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های morteza.ghrdi</title><link>https://virgool.ir/feed/@morteza.ghrdi</link><description>A doon paye iOS Developer @HamrahCard.</description><language>fa</language><pubDate>2026-11-12 06:14:55</pubDate><image><url>https://virgool.ir/images/default-avatar.jpg</url><title>morteza.ghrdi</title><link>https://virgool.ir/@morteza.ghrdi</link></image><item><title>خلاصه‌ای بر map و compactMap در آرایه های swift</title><link>https://virgool.ir/@morteza.ghrdi/خلاصهای-بر-map-و-compactmap-در-آرایه-های-swift-mztasnqrrzsk</link><description>Apple Swift programming languageسلاممن مرتضی هستم و قراره این اولین نوشته من تو ویرگول باشه.امروز تصمیم گرفتم در مورد فانکشن map و compactMap در آرایه‌های سوییفت بنویسم.خب اول ببینیم تعریف Apple از map چی هست:Returns an array containing the results of mapping the given closure over the sequence’s elements.ParameterstransformA mapping closure. transform accepts an element of this sequence as its parameter and returns a transformed value of the same or of a different type.Return ValueAn array containing the transformed elements of this sequence.گفته که map یک فانکشنی هست در کالکشن ها (آرایه‌،‌ دیکشنری‌،ست) که به صورت پیمایشی بر روی هر کدام از المان های اون کالکشن، یک عملیاتی رو انجام میده و نتیجه رو به صورت آرایه‌ای دیگه برمیگردونه.مثال:let names = [&#34;Ali&#34;, &#34;Morteza&#34;, &#34;REZA&#34;, &#34;Saghar&#34;]&#xA;let lowercaseNames = cast.map { $0.lowercased() }&#xA;// &#39;lowercaseNames&#39; == [&#34;ali&#34;, &#34;morteza&#34;, &#34;reza&#34;, &#34;saghar&#34;]&#xA;let letterCounts = cast.map { $0.count }&#xA;// &#39;letterCounts&#39; == [3, 7, 4, 6]نکته ۱: پیچیدگی زمانی : O(n) هستش که n طول کالکشن میشه.نکته ۲:نوع آرایه برگشتی به نوع عملیاتی که در داخل clouser مپ انجام می‌شه بستگی داره و ممکنه با نوع آرایه اصلی متفاوت باشه. ساختار map:در واقع ساختار تابع map به صورت زیر هستشextension Sequence { &#xA;   // T is the output type&#xA; func map&lt;T&gt;(_ transform: (Element) -&gt; T) -&gt; [T] {&#xA;       var result: [T] = [] &#xA;      self.forEach { (item) in&#xA;            result.append(transform(item))  &#xA;      } &#xA; return result   &#xA; }&#xA;} تفاوت map با compactMap:زمانی که ما از مپ برای تغییر المان های یک آرایه استفاده می‌کنیم، ممکن هست که یک تغییری امکان انجامش نباشه.به این مثال توجه کنید:let stringNumbers = [&#34;1&#34;, &#34;2&#34;, &#34;3&#34;, &#34;4&#34;, &#34;reza&#34;]&#xA;let intNumbers = stringNumbers.map { String($0) } &#xA;//  [Optional(1), Optional(2), Optional(3), Optional(4), nil]&#xA;&#xA;چیزی که در آرایه intNumbers اعمال میشه، مقادیر آپشنالی هستند. که unwrap نشدن و ما برای حل این مشکل میتونیم از compactMap استفاده کنیم:let stringNumbers = [&#34;1&#34;, &#34;2&#34;, &#34;3&#34;, &#34;4&#34;, &#34;morteza&#34;]let intNumbers = stringNumbers.compactMap { Int($0) }// [1, 2, 3, 4]در واقع compactMap مقادیر nil رو از آرایه نهایی حذف می‌کنه و ما یک آرایه با مقادیر unwrap شده در اختیار داریم.این نوشته برداشت آزادی بود از این مقاله در مدیوم.در آخر اگر پیشنهاد یا هر چیزی که کمک کنه این نوشته بهتر بشه دارین، خوشحال می‌شم که بیان کنید تا همینجا اضافه بشه.</description><category>morteza.ghrdi</category><author>morteza.ghrdi</author><pubDate>Sat, 26 Sep 2020 16:08:16 +0330</pubDate></item></channel></rss>