المصفوفة Array في Elm هي مجموعة سريعة غير قابلة للتغيير من صفر أو أكثر من القيم من النوع نفسه.
على عكس List، وهو جزء من الاستيرادات الافتراضية، يجب استيراد وحدة Array صراحةً باستخدام import Array أو ما شابه.
يمكن تعريف المصفوفات على النحو التالي:
import Array exposing (Array)
empty : Array Char
empty = Array.empty
singleValue = Array.fromList [ 5 ] --> Array Int
repeatSingleValue = Array.repeat 2 5 --> Array.fromList [ 5, 5 ]
initialiseFromIndex = Array.initialise 3 (\index -> index * 2) --> Array.fromList [ 0, 2, 4 ]
initialisefromList = Array.fromList [ "a", "b", "c" ] --> Array.fromList [ "a", "b", "c" ]
تُضاف العناصر إلى المصفوفة باستخدام Array.push:
twoToFour = Array.fromList [ 2, 3, 4 ]
oneToFour = Array.push 1 twoToFour --> Array.fromList [ 1, 2, 3, 4 ]
يُسترجَع عنصر من المصفوفة باستخدام Array.get:
sixSeven = Array.fromList [ 6, 7 ]
Array.get 0 sixSeven --> Just 6
يُضبط عنصر في المصفوفة باستخدام Array.set:
sixSeven = Array.fromList [ 6, 7 ]
Array.set 1 8 sixSeven --> Array.fromList [ 6, 8 ]
تُعالَج المصفوفات بواسطة الدوال المعرّفة في وحدة Array.
oneTwo = Array.fromList [ 1, 2 ]
Array.length oneTwo --> 2
بصفتها ساحرةً ناشئة، تحتاج إيليز إلى ممارسة بعض الأساسيات. لديها رزمة بطاقات تريد التعامل معها.
ولتسهيل الأمور قليلًا، تستخدم البطاقات من 1 إلى 10 فقط.
نفّذ الدالة getCard التي تُرجع البطاقة الموجودة عند الموضع index من الرزمة المعطاة. وإذا لم يكن الفهرس موجودًا في الرزمة، فأرجع Nothing.
getCard 2 ( Array.fromList [ 1, 2, 4, 1 ] )
--> Just 4
getCard 6 ( Array.fromList [ 1, 2, 4, 1 ] )
--> Nothing
نفّذ الدالة setCard التي تُرجع رزمة تغيّرت فيها البطاقة عند الموضع index إلى البطاقة الجديدة المعطاة.
وإذا لم يكن index موجودًا في الرزمة، فأرجع الرزمة الأصلية.
setCard 2 6 ( Array.fromList [ 1, 2, 4, 1 ] )
--> Array.fromList [ 1, 2, 6, 1 ]
setCard 6 6 ( Array.fromList [ 1, 2, 4, 1 ] )
--> Array.fromList [ 1, 2, 4, 1 ]
نفّذ الدالة addCard التي تُرجع رزمة أُضيفت إليها البطاقة الجديدة.
addCard 8 ( Array.fromList [ 5, 9, 7, 1 ] )
--> Array.fromList [ 5, 9, 7, 1, 8 ]
نفّذ الدالة removeCard التي تُرجع رزمة أُزيلت منها البطاقة عند الموضع index.
وإذا لم يكن index المعطى فهرسًا صالحًا في الرزمة، فأرجع الرزمة الأصلية.
removeCard 2 ( Array.fromList [ 3, 2, 6, 4, 8 ] )
--> Array.fromList [ 3, 2, 4, 8 ]
removeCard 2 ( Array.fromList [ 3, 2 ] )
--> Array.fromList [ 3, 2 ]
نفّذ الدالة evenCardCount التي تعدّ عدد البطاقات ذات الأعداد الزوجية في الرزمة.
evenCardCount (Array.fromList [ 3, 8, 4, 5, 1, 6, 10 ] )
--> 4
سجّل في Exercism لتتعلّم وتتقن Elm عبر 28 مفهومًا110 تمارين، وإرشاد بشري حقيقي، وكل ذلك مجانًا.