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
الیس میخواهد شعبدهباز شود و برای این کار باید چند مهارت پایه را تمرین کند. او یک دسته کارت دارد که میخواهد با آن کار کند.
برای اینکه کارش کمی راحتتر شود، فقط از کارتهای ۱ تا ۱۰ استفاده میکند.
تابع getCard را پیادهسازی کنید که کارت واقع در موقعیت index را از دستهی دادهشده برمیگرداند. اگر 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