Need For Speed

Need For Speed

লার্নিং অনুশীলনী

ভূমিকা

Alias

একই প্রজেক্টের ভিন্ন ভিন্ন Elixir মডিউলের মধ্যে কোড শেয়ার করতে হলে আপনাকে বাইরের মডিউলটিকে তার পুরো নাম দিয়ে রেফারেন্স করতে হবে। কিন্তু ওই নামটি যদি খুব লম্বা বা বিভ্রান্তিকর হয়?

alias নামের বিশেষ ফর্মটি দিয়ে আপনি বাইরের কোনো মডিউল যে নামে রেফারেন্স করেন, সেটি ছোট বা বদলে দিতে পারেন। কোনো আর্গুমেন্ট ছাড়া ব্যবহার করলে এটি মডিউলের নামটি ছেঁটে তার শেষ অংশটুকুতে নামিয়ে আনে, যেমন MyApp.Logger.Settings হয়ে যায় Settings। :as অপশন দিয়ে একটি কাস্টম নাম নির্দিষ্ট করা যায়।

সাধারণত alias মডিউল ডেফিনিশনের শুরুতে যোগ করা হয়।

defmodule Square do
  alias Integer, as: I

  def area(a), do: I.pow(a, 2)
end

Import

import নামের বিশেষ ফর্মটি দিয়ে আপনি মডিউলের নাম না লিখেই বাইরের কোনো মডিউলের ফাংশন ব্যবহার করতে পারেন।

পুরো একটি বাইরের মডিউল ইমপোর্ট করলে বিদ্যমান লোকাল ফাংশনের সাথে কনফ্লিক্ট তৈরি হতে পারে। এটি এড়াতে দুটি অপশন আছে: :except এবং :only। দুটিই একটি কিওয়ার্ড লিস্ট আশা করে, যেখানে কী (key) হলো ফাংশনের নাম আর মান হলো ফাংশনের আর্গুমেন্ট সংখ্যা।

সাধারণত import মডিউল ডেফিনিশনের শুরুতে যোগ করা হয়।

defmodule Square do
  import Integer, only: [pow: 2]

  def area(a), do: pow(a, 2)
end

নির্দেশনা

সম্প্রতি কেনা সেই রিমোট কন্ট্রোল কারটি আপনার একেবারে নতুন একটি শখে পরিণত হয়েছে। আপনি রিমোট কন্ট্রোল কার রেসের আয়োজন করছেন।

রেস সিমুলেশন রান করার একটি প্রোগ্রাম লেখা আপনি প্রায় শেষ করে ফেলেছিলেন, ঠিক তখনই আপনার বিড়াল আপনার কিবোর্ডের উপর লাফিয়ে পড়ে কোডের কয়েকটি লাইন মুছে দিল। এখন আপনার প্রোগ্রামটি আর কম্পাইল হয় না...

1. কম্পাইলেশন এরর Race.__struct__/0 is undefined ঠিক করুন

একটি অ্যালিয়াস যোগ করুন, যাতে NeedForSpeed.Race মডিউলটিকে ছোট নাম Race দিয়ে রেফার করা যায়।

2. কম্পাইলেশন এরর Car.__struct__/0 is undefined ঠিক করুন

একটি অ্যালিয়াস যোগ করুন, যাতে NeedForSpeed.RemoteControlCar মডিউলটিকে ছোট নাম Car দিয়ে রেফার করা যায়।

3. কম্পাইলেশন এরর undefined function puts/1 ঠিক করুন

puts/1 ফাংশনটি আসে IO মডিউল থেকে। মডিউলটি রেফার না করেই এটি ব্যবহার করতে পারার জন্য এটি ইমপোর্ট করুন।

4. কম্পাইলেশন এরর undefined function default_color/0 ঠিক করুন

default_color/0, red/0, cyan/0 এবং green/0 ফাংশনগুলো সবই আসে IO.ANSI মডিউল থেকে। আপনি অন্য গাড়ির রঙের সাপোর্ট যোগ করার পরিকল্পনা করছেন, তাই পুরো মডিউলটি ইমপোর্ট করতে চান। দুর্ভাগ্যক্রমে, IO.ANSI মডিউলের color/1 ফাংশনটি আপনার একটি লোকাল ফাংশনের সঙ্গে সংঘর্ষ করে। ওই একটি ফাংশন বাদে পুরো IO.ANSI মডিউলটি ইমপোর্ট করুন।

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Elixir Exercism

Need For Speed শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Elixir ট্র্যাকের 58টি কনসেপ্ট168টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।