ऐरे Elixir में वैल्यू के संग्रह को रखने के लिए एक बुनियादी डेटा टाइप हैं। ऐरे अपरिवर्तनीय होते हैं, यानी उन्हें बदला नहीं जा सकता। ऐरे को बदलने वाला हर ऑपरेशन एक नया ऐरे लौटाता है। ऐरे Enumerable प्रोटोकॉल को लागू करते हैं, जिससे Enum और Stream मॉड्यूल के फंक्शन इस्तेमाल किए जा सकते हैं।
Elixir में ऐरे लिंक्ड लिस्ट के रूप में लागू किए गए हैं, न कि एक के बाद एक सटे मेमोरी स्थानों वाले ऐरे के रूप में। इसलिए ऐरे के किसी एलिमेंट तक पहुँचने में ऐरे की लंबाई के हिसाब से रैखिक समय लगता है।
ऐरे लिटरल रूप में, हेड-टेल नोटेशन में (जिसमें cons ऑपरेटर | इस्तेमाल होता है), या दोनों के मेल से लिखे जा सकते हैं:
# Literal Form
[]
[1]
[1, 2, 3]
# Head-tail Notation
[]
# same as [1]
[1 | []]
# same as [1, 2, 3]
[1 | [2 | [3 | []]]]
# Mixed
# same as [1, 2, 3]
[1 | [2, 3]]
cons (|) ऑपरेटर से पहले एक से अधिक एलिमेंट भी हो सकते हैं।
# Multiple prepends
[1, 2, 3 | [4, 5]]
हेड-टेल नोटेशन की मदद से ऐरे के अंत में एलिमेंट जोड़े जा सकते हैं।
list = [2, 1]
[3, 2, 1] == [3 | list]
# => true
इटरेशन के दौरान ऐरे में एलिमेंट जोड़ना एक एंटी-पैटर्न माना जाता है। ऐरे में एलिमेंट जोड़ने के लिए पूरे ऐरे से गुज़रकर उसे अंत में जोड़ना पड़ता है। इसलिए हर इटरेशन में नया एलिमेंट जोड़ने पर हर इटरेशन में पूरे ऐरे से गुज़रना पड़ेगा।
ऐरे को उलटकर उसके शुरू में एलिमेंट जोड़ें, और फिर नतीजे को उलट दें, तो वही नतीजा मिल जाता है। शुरू में जोड़ना एक तेज़ ऑपरेशन है और इसमें स्थिर समय लगता है।
# Appending to the end of a list (potentially slow)
[1, 2, 3] ++ [4] ++ [5] ++ [6]
# Prepend to the start of a list (faster, due to the nature of linked lists)
[6 | [5 | [4 | [3, 2, 1]]]]
# then reverse!
ऐरे के लिए Kernel के कई आम फंक्शन हैं:
hd/1 ऐरे का हेड लौटाता है, यानी ऐरे का पहला एलिमेंट।tl/1 ऐरे का टेल लौटाता है, यानी ऐरे में से पहला एलिमेंट हटाने पर जो बचता है।length/1 ऐरे में मौजूद एलिमेंट की संख्या लौटाता है।in/2 एक बूलियन वैल्यू लौटाता है, जो बताता है कि कोई एलिमेंट ऐरे में है या नहीं।इसके अलावा List मॉड्यूल भी है।
ऐरे में किसी भी डेटा टाइप की वैल्यू हो सकती है, और अलग-अलग डेटा टाइप की वैल्यू भी मिली-जुली रखी जा सकती हैं।
list = [1, :a, 2.0, "string"]