Do you want to pick up from where you left of?
Take me there

ব্যাসিকস

শুরুর কথা, ব্যাসিক ডাটা টাইপ ও ব্যাসিক অপারেশন

শুরুর কথা

এলিক্সির ইন্সটলেশন

শুরুতেই আমাদের এলিক্সির ইন্সটল করতে হবে। আলাদা আলাদা অপারেটিং সিস্টেমের জন্য ইন্সটলেশনের বিস্তারিত নির্দেশনা পাওয়া যাবে এলিক্সির এর অফিশিয়াল ওয়েব সাইটের এই সেকশনে - Installing Elixir। এই গাইডলাইন অনুসরণ করে প্রথমে এলিক্সির ইন্সটল করে নিন।

এলিক্সির ইন্সটল করা হয়ে গেলে নিচের কমান্ডটি ব্যবহার করে আপনি এলিক্সির এর ভার্সন নাম্বার দেখতে পাবেন:

% elixir -v
Erlang/OTP {{ site.erlang.OTP }} [erts-{{ site.erlang.erts }}] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Elixir {{ site.elixir.version }}

ইন্টারএ্যাক্টিভ মোড

এলিক্সিরের ইন্টারএ্যাক্টিভ শেল এর নাম iex - এই ইন্টারএ্যাক্টিভ প্রম্পট এ আমরা এলিক্সির এক্সপ্রেশন টাইপ করে সাথে সাথে আউটপুট পেতে পারি।

ইন্টারএ্যাক্টিভ শেল চালু করতে কমান্ডলাইনে টাইপ করুন - iex:

Erlang/OTP {{ site.erlang.OTP }} [erts-{{ site.erlang.erts }}] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Interactive Elixir ({{ site.elixir.version }}) - press Ctrl+C to exit (type h() ENTER for help)
iex>

বিঃদ্রঃ উন্ডোজপাওয়ার শেলে আপনাকে iex.bat টাইপ করতে হবে।

আসুন আমরা কিছু এক্সপ্রেশন টাইপ করি এবং সেগুলোর আউটপুট দেখে নেই:

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

উপরের সব গুলো এক্সপ্রেশন এর অর্থ না বুঝলেও চিন্তার কোন কারন নেই, আস্তে আস্তে আমরা এই এক্সপ্রেশন গুলো চিনবো ও ব্যবহার করতে শিখবো।

ব্যাসিক ডাটা টাইপ

ইন্টিজার

iex> 255
255

এছাড়া বাইনারি, অক্টাল এবং হেক্সাডেসিমেল নাম্বার সাপোর্টও বিল্ট ইন:

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

ফ্লোট

এলিক্সিরে ফ্লোট টাইপের জন্য দশমিক এর আগে অন্তত একটা ডিজিট থাকতে হবে। এই নাম্বার গুলো ৬৪ বিট ডাবল প্রেসিশন এবং এক্সপোনেন্ট এর জন্য e ব্যবহার করে:

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

বুলিয়ানস

এলিক্সির এর বুলিয়ান টাইপের ভ্যালু হতে পারে true অথবা falsefalse এবং nil ভ্যালু বাদে সব ভ্যালুই ট্রুথি - অর্থাৎ বুলিয়ান টাইপে true হিসেবে বিবেচ্য হবে।

iex> true
true
iex> false
false

এ্যাটমস

এ্যাটম মূলত কন্সট্যান্ট - এ্যাটমের নামই তার ভ্যালু। রুবি তে যারা কাজ করেছেন, তাদের কাছে এ্যাটম আর সিম্বলের কনসেপ্ট একই রকম মনে হবে।

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

বুলিয়ান truefalse আসলে দুইটা এ্যাটম - :true এবং :false

iex> is_atom(true)
true
iex> is_boolean(:true)
true
iex> :true === true
true

এলিক্সিরে মডিউল এর নামগুলোও এ্যাটম। যেমন: MyApp.MyModule একটা ভ্যালিড এ্যাটম যদিও আমরা এই নামে কোন মডিউল এখনো তৈরি করিনি।

iex> is_atom(MyApp.MyModule)
true

আর্ল্যাং এর বিল্ট ইন বা থার্ড পার্টি লাইব্রেরী থেকে মডিউল রেফার করার জন্য আমরা সব সময়ই এ্যাটম ব্যবহার করি।

iex> :crypto.strong_rand_bytes 3
<<23, 104, 108>>

স্ট্রিংস

এলিক্সিরে স্ট্রিং 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

যদি আমরা ভাগফল ইন্টিজারে পেতে চাই বা ভাগশেষ জানতে চাই সেক্ষেত্রে আমরা div এবং rem ফাংশন ব্যবহার করতে পারি:

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

বুলিয়ান

এলিক্সির ||, &&, এবং ! অপারেটর সাপোর্ট করে যেগুলো যে কোন টাইপের সাথে ব্যবহার করা যায়:

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

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

iex> !42
false
iex> !false
true

এছাড়াও তিনটা এ্যাডিশনাল অপারেটর আছে যেগুলোর প্রথম আর্গুমেন্ট অবশ্যই বুলিয়ান ভ্যালু (true or false) হতে হবে:

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

বিঃদ্রঃ এলিক্সির এর and এবং or আসলে আর্ল্যাং এর andalso এবং orelse অপারেটরে ম্যাপ করা।

তুলনা

এলিক্সির গতানুগতিক সব কম্প্যারিজন(তুলনামূলক) অপারেটর সাপোর্ট করে: ==, !=, ===, !==, <=, >=, < এবং >

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 < function < port < pid < tuple < map < 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"
Caught a mistake or want to contribute to the lesson? Edit this lesson on GitHub!