الأساسيات

قد تكون بعض محتويات هذه الترجمة قديمة.
تم تطبيق عدة تغييرات طفيفة على الدرس الأصلي منذ آخر تحديث.

مقدمة، أنواع البيانات والعمليات الأساسية.

جدول المحتويات

البدء

تثبيت إِلِكسَرْ

يمكن إيجاد تعليمات التثبيت لكل نظام التشغيل على موقع elixir-lang.org في دليل تثبيت إِلِكسَرْ.

بعد تثبيت إِلِكسَرْ تستطيع أن تتأكد من النسخة المثبتة.

% elixir -v
Erlang/OTP 20 [erts-9.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Elixir 1.5.2

تشغيل نمط موجة الأوامر التفاعلي

تضم إِلِكسَرْ الأمر iex والذي يمكنك من تشغيل اللغة في الوضع التفاعلي وتنفيذ بعض جُمَلِ الأوامر

دعنا نبدأ بتنفيذ iex:

Erlang/OTP 20 [erts-9.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Interactive Elixir (1.5.2) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)>

دعنا نحاول كتابة بعض الجُمَل (التعبيرات) بسيطة:

iex(1)> 2+3
5
iex(2)> 2+3 == 5
true
iex(3)> String.length("The quick brown fox jumps over the lazy dog")
43

لا تقلق إذا لم تفهم كل التعبيرات حتى الآن، نأمل أن تصلك فكرة عامة عن اللغة وتعبيراتها.

أنواع البيانات الأساسية

الأعداد الصحيحة

iex> 255
255
iex> 0xFF
255

هناك دعم مدمج لنظام العد الثنائي والثماني والست عشر:

iex> 0b0110
6
iex> 0o644
420
iex> 0x1F
31

الأعداد الغير صحيحة أو ذات الفاصلة العشرية

في إِلِكْسَر، يجب كتابة خانة واحدة على الأقل قبل الفاصلة لتمثيل عدد عشري كما يوجد دعم للصيغة العلمية e.

iex> 3.41
3.41
iex> .41
** (SyntaxError) iex:2: syntax error before: '.'
iex> 1.0e-10
1.0e-10

القيم المنطقية

تدعم إِلِكْسَر القِيَم المنطقية true و false وجميع القيم تعبّر عن الصحة ما عدا false و nil.

iex> true
true
iex> false
false

الذرات

الذرة تعتبر ثابتاً اسمه يساوى قيمته. إذا كنت على معرفة بلغة برمجة روبي، الذرة هي مرادفة السمبولس:

iex> :foo
:foo
iex> :foo == :bar
false

ملاحظة: قيم منطقية true و false تعتبر ذرات :true و :false على التوالي.

iex> true |> is_atom
true
iex> :true |> is_boolean
true
iex> :true === true
true

السلاسل النصية

القيم النصية في إِلِكْسَر هي أحرف بترميز UTF-8 محاطة بعلامتي تنصيص مزدوجة.

iex> "Hello"
"Hello"
iex> "dziękuję"
"dziękuję"

يمكن للقيم النصية أن تُكْتَب مقسمة على أكثر من سطر:

iex> "foo
...> bar"
"foo\nbar"
iex> "foo\nbar"
"foo\nbar"

تضم أليكسير أيضا أنواع بيانات معقدة أكثر. سوف نتعلّم أكثر عنها أثناء الدرس عن المجموعات والدوالّ.

العمليات الأساسية

الحساب

تدعم أليكسير العمليات الحسابية الأساسية +, -, *, و / كما تتوقع. من المهم أن تلاحظ أن / دائما سيعيد عدد عشري:

iex> 2 + 2
4
iex> 2 - 1
1
iex> 2 * 5
10
iex> 10 / 5
2.0

في إِلِكْسَر، يمكنك الحصول على ناتج القسمة بدون باقٍ أو الحصول على باقي القسمة فقط عن طريق الدوالّ التالية:

iex> div(10, 5)
2
iex> rem(10, 3)
1

المنطق

توفّر إِلِكسَرْ رموز ||, &&, and ! لعمليات حسابية، وهي تدعم أي نوع:

iex> -20 || true
-20
iex> false || 42
42

iex> 42 && true
true
iex> 42 && nil
nil

iex> !42
false
iex> !false
true

هناك ثلاث أوامر أخرى أيضا للتعامل مع القيم المنطقية:

iex> true and 42
42
iex> false or true
true
iex> not false
true
iex> 42 and true
** (ArgumentError) argument error: 42
iex> not 42
** (ArgumentError) argument error

المقارنة

عند إِلِكسَرْ كل عمليات المقارنة المعتادة: ==, !=, ===, !==, <=, >=, < و >.

iex> 1 > 2
false
iex> 1 != 2
true
iex> 2 == 2
true
iex> 2 <= 3
true

لمقارنة صارمة بين أعداد صحيحة وأعداد عشرية، استخدم ===:

iex> 2 == 2.0
true
iex> 2 === 2.0
false

من الخصائص المهمة في إِلِكْسَر إمكانية المقارنة بين قيمتين من نفس النوع، تأتي أهمية ذلك عند ترتيب القِيَم. ليس من الضروري أن تحفظ هذا الترتيب ولكن من باب العلم بالشيء.

number < atom < reference < functions < port < pid < tuple < maps < list < bitstring

يمكن أن يؤدي هذا لمقارنات مثيرة للاهتمام، ولكنها صحيحة تماماً، ولا تستطيع أن تجدها في لغات برمجة أخرى:

iex> :hello > 999
true
iex> {:hello, :world} > [1, 2, 3]
false

القيم النصية الممزوجة

إذا استخدمت روبي، مزج القيم النصية في إِلِكسَرْ سيبدو مألوفاً:

iex> name = "Sean"
iex> "Hello #{name}"
"Hello Sean"

الدمج بين القِيَم النصية

استخدم <> لعملية المزج بين القيم النصية:

iex> name = "Sean"
iex> "Hello " <> name
"Hello Sean"