سلام درود خدمت همراهان همیشگی سایت پی وی لرن . با آموزش زبان برنامه نویسی #F همراهتون هستیم. به طور کلی زمانی که نیاز است مقادیر زیادی را ذخیره کنیم در این صورت نیاز به تعریف تعداد زیادی متغیر است. در این مواقع می توان از آرایه ها به جای متغیر ها استفاده نمود. پس از طریق آرایه می توانیم بی شمار مقدار همنوع رو دخیره کنیم. همونطور که در جلسه قبل مشاهده نمودید، برخی از ویژگی های آرایه ها اشاره نمودیم . در این بخش نیز به ادامه مبحث آرایه ها در زبان #F می پردازیم و عملیات پایه در آرایه ها در زبان #F مانند Operators.max ،Operators.min و Operators.compare برای مقایسه عناصر در #F و… رو بررسی می نماییم. همراه ما بمانید.
در ادامه بررسی آرایه ها در زبان #F ،جدول زیر عملیات پایه در آرایه ها در زبان #F را نشان می دهد.( ادامه جدول عملیات پایه در آرایه ها در زبان #F جلسه قبل )
مقدار | توضیحات |
mapi2 : (int → ‘T1 → ‘T2 → ‘U) → ‘T1 [] → ‘T2 [] → ‘U [] | آرایه ای ایجاد می کند که عناصر آن نتایج اعمال تابع عرضه شده به عناصر متناظر دو مجموعه است و همچنین ایندکس عناصر را منتقل می کند. دو آرایه ورودی باید طول یکسان داشته باشند؛ در غیر این صورت، ArgumentException مطرح شده است. |
max : ‘T [] → ‘T | بزرگ ترین عناصر آرایه را بازگرداند. Operators.max برای مقایسه عناصر استفاده می شود. |
maxBy : (‘T → ‘U) → ‘T [] → ‘T | بزرگ ترین عناصر یک آرایه را برمی گرداند، در نتیجه تابع با Operators.max مقایسه می شود. |
min : (‘T [] → ‘T | کوچکترین عنصر از یک آرایه را بازگرداند. Operators.min برای مقایسه عناصر استفاده می شود. |
minBy : (‘T → ‘U) → ‘T [] → ‘T | کوچکترین عنصر از یک آرایه را بازگرداند. Operators.min برای مقایسه عناصر استفاده می شود. |
ofList : ‘T list → ‘T [] | آرایه را از لیست ارائه شده ایجاد می کند. |
ofSeq : seq<‘T> → ‘T [] | یک آرایه از آبجکت قابل بررسی ارائه شده ایجاد می کند. |
[]partition : (‘T → bool) → ‘T [] → ‘T [] * ‘T | یک آرایه را به دو آرایه تقسیم می کند. یکی شامل عناصری که برای شرایط عرضه شده true را باز می گرداند و دیگری حاوی آن هایی است که برای آن false را باز می گرداند. |
[]permute : (int → int) → ‘T [] → ‘T | عناصر یک آرایه را با توجه به جایگزینی مشخص تعویض می کند. |
pick : (‘T → ‘U option) → ‘T [] → ‘U | تابع عرضه شده را به عناصر متوالی یک آرایه ارائه شده اعمال می کند و نتیجه اول را باز می گرداند که در آن تابع (Some(x را برای برخی از x ها باز می گرداند. اگر تابع هرگز (Some(x را بازنگرداند، KeyNotFoundException اعلام شده است. |
reduce : (‘T → ‘T → ‘T) → ‘T [] → ‘T | یک تابع را برای هر عنصر آرایه اعمال می کند. یک آرگومان accumulator را از طریق محاسبات تریدینگ می کند. اگر تابع ورودی f باشد و عناصر آرایه i0 … iN باشد، این تابع f (… (f i0 i1) …) iN را محاسبه می کند. اگر آرایه صفر باشد، ArgumentException اعلام شده است. |
reduceBack : (‘T → ‘T → ‘T) → ‘T [] → ‘T | یک تابع را برای هر عنصر آرایه اعمال می کند. یک آرگومان accumulator را از طریق محاسبات تریدینگ می کند. اگر تابع ورودی f باشد و عناصر i0 … iNهستند. این تابع ((f i0 (…(f iN-1 iN را محاسبه می کند. اگر آرایه صفر باشد، ArgumentException اعلام شده است. |
rev : ‘T [] → ‘T [] | ترتیب عناصر در یک آرایه ارائه شده را تغییر می دهد. |
scan : (‘State → ‘T → ‘State) → ‘State → ‘T [] → ‘State []) | رفتارهایی مانند fold، اما نتایج متوسط را با نتایج نهایی باز می گرداند. |
scanBack : (‘T → ‘State → ‘State) → ‘T [] → ‘State → ‘State [] | رفتارهایی مانند foldBack، اما نتایج واسط را با نتایج نهایی باز می گرداند. |
set : ‘T [] → int → ‘T → unit | یک عنصر از یک آرایه را تعیین می کند. |
[]sort : ‘T[] → ‘T | عناصر یک آرایه را مرتب می کند و آرایه جدید را باز می گرداند. Operators.compare برای مقایسه عناصر استفاده می شود. |
[]sortBy : (‘T → ‘Key) → ‘T [] → ‘T | عناصر آرایه را با استفاده از تابع عرضه شده مرتب می کند تا عناصر را به نوعی که عملیات مرتب سازی بر اساس آن است، تبدیل کند. و یک آرایه جدید را بازگرداند. Operators.compare برای مقایسه عناصر استفاده می شود. |
sortInPlace : ‘T [] → unit | عناصر یک آرایه را با تغییر آرایه در محل، با استفاده از تابع مقایسه شده ارائه می دهد. Operators.compare برای مقایسه عناصر استفاده می شود. |
sortInPlaceBy : (‘T → ‘Key) → ‘T [] → unit | عناصر یک آرایه را با تغییر آرایه در محل، با استفاده از projection عرضه شده برای keys ها، مرتب می کند. Operators.compare برای مقایسه عناصر استفاده می شود. |
sortInPlaceWith : (‘T → ‘T → int) → ‘T [] → unit | عناصر یک آرایه را با استفاده از تابع مقایسه شده ی ارائه شده، برای تغییر آرایه در محل مرتب می کند. |
[]sortWith : (‘T → ‘T → int) → ‘T [] → ‘T | عناصر یک آرایه را با استفاده از تابع مقایسه شده ارائه شده مرتب می کند. و یک آرایه جدید را باز می گرداند. |
[]sub : ‘T [] → int → int → ‘T | یک آرایه را ایجاد می کند که شامل subrange عرضه شده است . که با شروع index و length مشخص شده است. |
sum : ‘T [] → ^T | مجموع عناصر در آرایه را به دست می آورد. |
sumBy : (‘T → ^U) → ‘T [] → ^U | مجموع نتایج حاصل شده توسط اعمال یک تابع به هر عنصر آرایه را بر می گرداند. |
toList : ‘T [] → ‘T list | آرایه ارائه شده را به لیست تبدیل می کند. |
<toSeq : ‘T [] → seq<‘T | آرایه ارائه شده را به عنوان دنباله ای مشاهده می کند. |
tryFind : (‘T → bool) → ‘T [] → ‘T option | عنصر اول را در آرایه ارائه شده بازمی گرداند که برای آن تابع عرضه شده true را برگرداند. اگر هیچ عنصری وجود نداشته باشد None را باز گرداند. |
tryFindIndex : (‘T → bool) → ‘T [] → int option | ایندکس اول عنصر را در یک آرایه بر می گرداند که شرایط عرضه شده را برآورده می کند. |
tryPick : (‘T → ‘U option) → ‘T [] → ‘U option | تابع عرضه شده را به عناصر متوالی آرایه ارائه شده اعمال می کند و اولین نتیجه را باز می گرداند. که در آن تابع (Some(x را برای برخی از x باز می گرداند. اگر تابع هرگز برنگرداند (Some(x را None بازگردانده می شود. |
[]unzip : (‘T1 * ‘T2) [] → ‘T1 [] * ‘T2 | آرایه ای از جفت های چندگانه را به دو آرایه ی چند گانه تقسیم کرده است. |
unzip3 : (‘T1 * ‘T2 * ‘T3) [] → ‘T1 [] * ‘T2 [] * ‘T3 [] | آرایه چندتایی از سه عنصر را به سه آرایه جند تایی تقسیم می کند. |
zeroCreate : int → ‘T [] | یک آرایه ایجاد می کند که عناصر آن ابتدا به مقدار پیش فرض <Unchecked.defaultof <‘T تنظیم شده است. |
[](zip : ‘T1 [] → ‘T2 [] → (‘T1 * ‘T2 | دو آرایه را به یک آرایه ی چندتایی که دو عنصر دارد، ترکیب می کند. دو آرایه باید طول برابر داشته باشند؛ در غیر این صورت، ArgumentException مطرح شده است. |
zip3 : ‘T1 [] → ‘T2 [] → ‘T3 [] → (‘T1 * ‘T2 * 113 ‘T3) [] | سه آرایه را به یک آرایه ی چندتایی که سه عنصر دارد ترکیب می کند. سه آرایه باید طول مساوی داشته باشند؛ در غیر این صورت، ArgumentException مطرح شده است. |
خب اینم از عملیات پایه در آرایه ها در زبان #F ،در بخش بعد، استفاده از برخی از این ویژگی ها را خواهیم دید.
مبحث عملیات پایه در آرایه ها در زبان #F رو در این جا به پایان می رسونیم. در این بخش عملیاتی مانند Operators.max ،Operators.min و Operators.compare برای مقایسه عناصر در #F ،برای ترکیب دو آرایه با استفاده از zip ،
تبدیل آرایه ارائه شده به لیست توسط toList و… رو بررسی نمودیم. در ادامه مبحث عملیات پایه در آرایه ها در زبان #F در جلسه بعد به بیان مثال هایی در این زمینه برای آشنایی بیش تر با این ویژگی ها می پردازیم.