سلام درود خدمت همراهان همیشگی سایت پی وی لرن . با آموزش زبان برنامه نویسی #F همراهتون هستیم. به طور کلی از متغیر ها می توان برای ذخیره سازی یک مقدار در برنامه استفاده کرد. گاهی اوقات نیاز است مقادیر زیادی را ذخیره کنیم که در این صورت نیاز به تعریف تعداد زیادی متغیر است. در این مواقع می توان از آرایه ها به جای متغیر ها استفاده نمود. پس از طریق آرایه می توانیم بی شمار مقدار همنوع رو دخیره کنیم. در این قسمت به آرایه ها در #F و عملیات پایه در آرایه ها در #F رو در سه بخش داریم.
آرایه ها fixed-size, zero-based, mutable از عناصر داده متوالی هستند که همه ی آن ها از یک نوع می باشند.
شما می توانید آرایه ها را با استفاده از سینتکس های مختلف و روش ها و یا با استفاده از توابعی از ماژول Array ایجاد کنید.
در این بخش ما درباره ایجاد آرایه ها بدون استفاده از توابع ماژول بحث خواهیم کرد.
سه روش syntactical برای ایجاد آرایه ها بدون توابع وجود دارد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | //using semicolon separator let array1 = [| 1; 2; 3; 4; 5; 6 |] for i in 0 .. array1.Length - 1 do printf "%d " array1.[i] printfn" " // without semicolon separator let array2 = [| 1 2 3 4 5 |] for i in 0 .. array2.Length - 1 do printf "%d " array2.[i] printfn" " //using sequence let array3 = [| for i in 1 .. 10 -> i * i |] for i in 0 .. array3.Length - 1 do printf "%d " array3.[i] printfn" " |
هنگامی که شما برنامه را کامپایل و اجرا می کنید، خروجی زیر را تولید می کند.
1 2 3 | 1 2 3 4 5 6 1 2 3 4 5 1 4 9 16 25 36 49 64 81 100 |
در ادامه عملیات پایه در آرایه ها در #F روخواهیم داشت.
ماژول کتابخانه Microsoft.FSharp.Collections.Array از عملیات در آرایه های یک بعدی پشتیبانی می کند.
جدول زیر عملیات پایه در آرایه ها در #F را نشان می دهد.
مقدار | توضیحات |
---|---|
[]append : ‘T [] → ‘T [] → ‘T | آرایه ای ایجاد می کند که شامل عناصر یک آرایه به دنبال عناصر آرایه دیگری است. |
average : ^T [] → ^T | میانگین عناصر در یک آرایه را به دست می آورد. |
averageBy : (‘T → ^U) → ‘T [] → ^U | میانگین عناصر ایجاد شده توسط اعمال یک تابع به هر عنصر آرایه را بازمی گرداند. |
blit : ‘T [] → int → ‘T [] → int → int → unit | تعدادی از عناصر را از یک آرایه می خواند و آنها را در دیگری می نویسد. |
[]choose : (‘T → U option) → ‘T [] → ‘U | یک تابع عرضه شده به هر عنصر آرایه اعمال می شود. آرایه ای را که حاوی نتایج x برای هر عنصر است برای این که آن تابع ( Some (x را بازگرداند. |
[]collect : (‘T → ‘U []) → T [] → ‘U | تابع عرضه شده را به هر عنصر آرایه اعمال می کند، نتایج را تلفیق می کند و آرایه ترکیبی را باز می گرداند. |
[]concat : seq<‘T []> → ‘T | یک آرایه را ایجاد می کند که شامل عناصر هر کدام از آرایه های ارائه شده می باشد. |
[]copy : ‘T → ‘T | آرایه ای را ایجاد می کند که حاوی عناصر آرایه ارائه شده است. |
[]create : int → ‘T → ‘T | یک آرایه ایجاد می کند که مقدار عناصر آن به اندازه ی عرضه ابتدایی است. |
[]empty : ‘T | یک آرایه خالی از نوع داده را برمی گرداند. |
exists : (‘T → bool) → ‘T [] → bool | تست این که آیا هر عنصر از یک آرایه، پیش فرض ارائه شده را برآورده می کند. |
exists2 : (‘T1 → ‘T2 → bool) → ‘T1 [] → ‘T2 [] → bool | تست این که آیا هر جفت عناصر مربوطه از دو آرایه شرایط عرضه شده را برآورده می کند. |
[]fill : ‘T [] → int → int → ‘T → unit | مقدار عناصر آرایه را با مقدار عرضه شده پر می کند. |
filter : (‘T → bool) → ‘T [] → ‘T | مجموعه ای را که حاوی تنها عناصری از آرایه های ارائه شده است را برای این که وضعیت بازگشت true عرضه شود. |
find : (‘T → bool) → ‘T [] → ‘T | اولین عنصر را بازمی گرداند که تابع ارائه شده true را بازگرداند. KeyNotFoundException را اعلام می کند، اگر چنین عنصری وجود ندارد. |
findIndex : (‘T → bool) → ‘T [] → int | شاخص اول عنصر را در یک آرایه نمایش می دهد که شرایط عرضه شده را برآورده می کند. KeyNotFoundException را اعلام می کند، اگر هیچ یک از عناصر این شرط را برآورده نمی کند. |
fold : (‘State → ‘T → ‘State) → ‘State → ‘T [] → ‘State | یک تابع را برای هر عنصر آرایه اعمال می کند. یک آرگومان accumulator را از طریق محاسبات تریدینگ می کند. اگر تابع ورودی f است و عناصر آرایه i0 … iN، این تابع f (… (f s i0) …) iN را محاسبه می کند. |
fold2 : (‘State → ‘T1 → ‘T2 → ‘State) → ‘State → ‘T1 [] → ‘T2 [] → ‘State | یک تابع را به جفت عناصر از دو آرایه ارائه شده، از چپ به راست اپلای می کند یک آرگومان accumulator را از طریق محاسبات تری. دینگ می کند. دو آرایه ورودی باید طول یکسان داشته باشند. در غیر این صورت، ArgumentException مطرح شده است. |
foldBack : (‘T → ‘State → ‘State) → ‘T [] → ‘State → ‘State | یک تابع را برای هر عنصر آرایه اعمال می کند. یک آرگومان accumulator را از طریق محاسبات تریدینگ می کند. اگر تابع ورودی f باشد و عناصر آرایه i0 … iN باشد، این تابع (( f i0 (… (f iN s را محاسبه می کند. |
foldBack2 : (‘T1 → ‘T2 → ‘State → ‘State) → ‘T1 [] → ‘T2 [] → ‘State → ‘State | یک تابع به جفت عناصر از دو آرایه ی ارائه شده اعمال می شود. یک آرگومان accumulator را از طریق محاسبات تریدینگ می کند. دو آرایه ورودی باید طول یکسان داشته باشند؛ در غیر این صورت، ArgumentException مطرح شده است. |
forall : (‘T → bool) → ‘T [] → bool | تست این که آیا تمام عناصر آرایه شرایط عرضه شده را برآورده می کنند. |
forall2 : (‘T1 → ‘T2 → bool) → ‘T1 [] → ‘T2 [] → bool | تست این که آیا تمام عناصر متناظر دو آرایه ارائه شده، شرایط عرضه شده را برآورده می کنند. |
get : ‘T [] → int → ‘T | عنصر را از یک آرایه می گیرد. |
[]init : int → (int → ‘T) → ‘T | یک تابع عرضه شده برای ایجاد آرایه ای از ابعاد عرضه شده استفاده می کند. |
isEmpty : ‘T [] → bool | تست این که آیا یک آرایه حاوی عناصر است |
iter : (‘T → unit) → ‘T [] → unit | تابع عرضه شده را به هر عنصر آرایه اعمال می کند. |
(iter2 : (‘T1 → ‘T2 → unit) → ‘T1 [] → ‘T2 [] → unit | تابع عرضه شده را به یک جفت عناصر برای تطابق شاخص ها در دو آرایه اعمال می کند. دو آرایه باید طول یکسان داشته باشند؛ در غیر این صورت، ArgumentException مطرح شده است. |
iteri : (int → ‘T → unit) → ‘T [] → unit | تابع عرضه شده را به هر عنصر آرایه اعمال می کند. عدد صحیح منتقل شده به تابع نشان دهنده index عنصر است. |
iteri2 : (int → ‘T1 → ‘T2 → unit) → ‘T1 [] → ‘T2 [] → unit | تابع عرضه شده را به یک جفت عنصر از تطبیق شاخص ها در دو آرایه اعمال می کند. همچنین index عناصر را منتقل می کند. دو آرایه باید طول یکسان داشته باشند؛ در غیر این صورت، ArgumentException مطرح شده است. |
length : ‘T [] → int | طول آرایه را برمی گرداند. ویژگی Length هم همین کار را می کند. |
[]map : (‘T → ‘U) → ‘T [] → ‘U | یک آرایه ایجاد می کند که عناصر آن نتایج اعمال تابع عرضه شده به هر یک از عناصر یک آرایه ارائه شده است. |
[]map2 : (‘T1 → ‘T2 → ‘U) → ‘T1 [] → ‘T2 [] → ‘U | یک آرایه ایجاد می کند که عناصر آن نتایج اعمال تابع عرضه شده به عناصر متناظر دو آرایه ارائه شده است. دو آرایه ورودی باید طول یکسان داشته باشند؛ در غیر این صورت، ArgumentException مطرح شده است. |
[]mapi : (int → ‘T → ‘U) → ‘T [] → ‘U | یک آرایه ایجاد می کند که عناصر آن نتایج اعمال تابع عرضه شده به هر یک از عناصر یک آرایه ارائه شده است. یک اینتجر ایندکس به تابع منتقل می شود که نشان دهنده index عنصر تبدیل شده است. |
ادامه جدول عملیات پایه در آرایه ها در #F رو در جلسه آینده خواهیم داشت.
آرایه ها در #F و عملیات پایه در آرایه ها در #F رو با هم بررسی نمودیم.
در جدول عملیات پایه در آرایه ها در #F به بررسی مقادیر مختلف و عملیات مربوط به آن پرداختیم.