কম্পিউটার টিউটোরিয়াল

শुरুর জন্য রুবি সিনট্যাক্স রেফারেন্স: কুইক রিভিউ এবং রিফ্রেশ

এটি একটি রুবি সিনট্যাক্স রেফারেন্স।

রুবি শিখতে যাবার সময় মনে রাখার জিনিসগুলোvolume বেশি হতে পারে।

সেজন্য আমি আপনার জন্য এই সিনট্যাক্স রেফারেন্স তৈরি করেছি!

এটি আপনার মেমরি রিফ্রেশ করতে সাহায্য করবে এবং রুবি প্রোগ্রাম লিখতে যা যা জানা দরকার তা দ্রুত রিভিউ করতে দেবে।

মজা করুন!

সূচিপত্র

  • ১ স্ট্রিংস
  • ২ হ্যাশেস
  • ৩ সিম্বল
  • ৪ নিল
  • ৫ অ্যারে
  • ৬ ইনumerable
  • ৭ ফাইল
  • ৮ রেগুলার এক্সপ্রেশন
  • ৯ রুবি জেমস ও বান্ডলার
  • ১০ ক্লাস ও অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং
  • ১১ ভেরিয়েবলের প্রকারভেদ
  • ১২ %w, %i, %q, %r, %x
  • ১৩ প্যারেন্থেসিসের ব্যবহার
  • ১৪ উদাহরণ
    • ১৪.১ মেথড ডেফিনিশন
    • ১৪.২ ক্লাস ডেফিনিশন
    • ১৪.৩ টার্নারি অপারেটর
    • ১৪.৪ স্ট্রিং ইন্টারপোলেশন
    • ১৪.৫ ব্লকসহ Each
    • ১৪.৬ If / Else
    • ১৪.৭ কেস স্টেটমেন্ট
  • ১৫ সারসংক্ষেপ
    • ১৫.১ সম্পর্কিত

স্ট্রিংস (Strings)

এক স্ট্রিং হলো দুটি কোটেশন মার্ক ("") এর মাঝপথে ক্যারেক্টারদের সিকোয়েন্স। টেক্সট ও ডেটা রিপ্রেজেন্ট করতে ব্যবহৃত হয়।

সিনট্যাক্স উদাহরণ:

"I like chocolate"

আরেক অপশন হলো সিঙ্গেল কোটেশন মার্ক ('') ব্যবহার করা।

'Ruby is awesome'

গুরুত্বপূর্ণ মেথডগুলো:

  • size
  • empty?
  • include?
  • gsub
  • split

আরও মেথড:

https://www.rubyguides.com/2018/01/ruby-string-methods/

হ্যাশেস (Hashes)

একটি হ্যাশ ({}) হলো কি-ভ্যালু পেয়ার (a => b) ডেটা স্ট্রাকচার। ডিকশনারি হিসেবে ব্যবহৃত হয়। আপনি কি দিয়ে হ্যাশ এলিমেন্ট এক্সেস করতে পারেন। কিগুলো ইউনিক।

উদাহরণ:

# Create
h = { a: 1, b: 2, c: 3 }
# Access
h[:a]
# Set
h[:test] = 10

লক্ষ্য করুন যে নতুন হ্যাশ {} সিনট্যাক্স (কার্লি ব্র্যাকেট) দিয়ে তৈরি হয়, কিন্তু আপনি সবসময় হ্যাশ এলিমেন্ট এক্সেস করেন [] (স্কোয়ার ব্র্যাকেট) দিয়ে।

এই সিম্পল বিষয় অনেক বिगিনারকে বিভ্রান্ত করে, তাই মনে রাখবেন।

স্ট্রিং কি সহ হ্যাশ:

h = { "a" => 1, "b" => 2, "c" => 3 }

গুরুত্বপূর্ণ মেথড:

  • key?
  • fetch
  • new (ডিফল্ট ভ্যালুর জন্য)
  • merge

আরও মেথড:

https://www.rubyguides.com/2020/05/ruby-hash-methods/

সিম্বল (Symbol)

শনাক্তের জন্য ব্যবহৃত একটি স্ট্যাটিক স্ট্রিং, একটি সাধারণ উদাহরণ হলো হ্যাশ কি। এগুলো সবসময় কোলন (:bacon) দিয়ে শুরু হয়। সিম্বল কখনো তার কন্টেন্ট (পৃথক ক্যারেক্টার) এর জন্য ব্যবহৃত হয় না।

যখন হ্যাশ ব্র্যাকেট ({}) এর ভিতরে ব্যবহৃত হয়, তখন কোলনের সাইড উল্টে যায়।

উদাহরণ:

{ abc: 1 }

এটি হলো সিম্বল :abc।

আরও জানুন:

https://www.rubyguides.com/2018/02/ruby-symbols/

নিল (Nil)

একটি সিঙ্গলটন ক্লাস (শুধু এক অবজেক্ট অনুমোদিত) যা একটি ডিফল্ট বা "নয় ফাউন্ড" টাইপের মান রিপ্রেজেন্ট করে।

কন্ডিশনাল কনটেক্সটে "false" আ retornar করে।

আরও জানুন:

  • https://www.rubyguides.com/2018/01/ruby-nil/
  • https://www.rubyguides.com/2019/02/ruby-booleans/

অ্যারে (Array)

অবজেক্টের একটি লিস্ট রিপ্রেজেন্ট করতে ব্যবহৃত একটি অবজেক্ট। একটি অ্যারে যেকোনো ধরনের অবজেক্ট ধারণ করতে পারে (a = [1, "abc", []]), নেস্টেড অ্যারে সহ।

আপনি তাদের ইন্ডেক্স (a[0]) দিয়ে অ্যারে এলিমেন্ট এক্সেস করেন এবং নেস্টেড অ্যারে a[0][0] দিয়ে।

উদাহরণ:

a = []
a << 10
a << 20
a << 30
a # [10, 20, 30]

গুরুত্বপূর্ণ মেথড:

  • size
  • empty?
  • push / pop
  • join
  • flatten

আরও মেথড:

https://ruby-doc.org/core-2.6.4/Array.html

এনumerable (Enumerable)

একটি রুবি মডিউল যা যেকোনো ক্লাসের এলিমেন্টে ইটারেট করতে ব্যবহৃত হয় যেটি each মেথড বাস্তবায়ন করে, যেমন Array, Range এবং Hash।

গুরুত্বপূর্ণ মেথড:

  • map
  • select
  • inject

আরও:

রুবি এনumerable মডিউলের একটি বেসিক গাইড (+ আমার প্রিয় মেথড)

ফাইল (File)

একটি ক্লাস যা রুবিতে ফাইল নিয়ে কাজ করতে সাহায্য করে। ফাইল পড়া থেকে শুরু করে সেখানে লেখা, অথবা ফাইল সম্পর্কে তথ্য পাওয়া যাবে, যেমন ফাইল সাইজ।

উদাহরণ:

File.read("/tmp/test.txt")

গুরুত্বপূর্ণ মেথড:

  • read
  • write

আরও:

https://www.rubyguides.com/2015/05/working-with-files-ruby/

রেগুলার এক্সপ্রেশন (Regular Expression)

আপনি যদি কোনো প্যাটার্ন, সাবস্ট্রিং, বা একটি স্ট্রিং এর ভিতরে কিছু নির্দিষ্ট কিছু খুঁজতে চান, তবে রেগুলার এক্সপ্রেশন আপনার খুঁজছেন তা হতে পারে।

এগুলো ইমেইল অ্যাড্রেস ও ফোন নাম্বার ভ্যালিডেট করতে বা টেক্সট থেকে ইনফরমেশন এক্সট্রাক্ট করতে ব্যবহৃত হয়।

উদাহরণ:

"aaaa1".match?(/[0-9]/) # true
"".match?(/[0-9]/) # false

আরও জানুন:

https://www.rubyguides.com/2015/06/ruby-regex/

রুবি জেমস ও বান্ডলার (Ruby Gems & Bundler)

রুবি জেমস হলো প্যাকেজ जिन्हें আপনি ডাউনলোড করে আপনার রুবি প্রোগ্রামে ব্যবহার করতে পারেন।

এই প্যাকেজগুলো আপনাকে নতুন ফাংশন দেয়।

উদাহরণস্বরূপ, রেইলসে আপনি সহজে Devise জেম দিয়ে অথেন্টিকেশন যোগ করতে পারেন, বা Kaminari জেম দিয়ে পেজিনেশন।

আরও জানুন:

https://www.rubyguides.com/2018/09/ruby-gems-gemfiles-bundler/

ক্লাস ও অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (Classes & Object-Oriented Programming)

রুবি একটি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ল্যাঙ্গুয়েজ। আমরা সবকিছুকে অবজেক্ট হিসেবে চিন্তা করি। অবজেক্টগুলো তাদের ব্লুপ্রিন্ট, ক্লাস থেকে তৈরি হয়।

অবজেক্ট জিনিস জানতে পারে এবং জিনিস করতে পারে। আপনি মেথড দিয়ে অবজেক্টকে কাজ করতে বলেন।

গুরুত্বপূর্ণ মেথড:

  • class
  • include / extend

আরও জানুন:

  • https://www.rubyguides.com/2019/02/ruby-class/
  • https://www.youtube.com/watch?v=LuTTUNnSj6o&list=PL6Eq_d2HYExeKIi4d9rUEoD6qSiKS4vfe&index=2

ভেরিয়েবলের প্রকারভেদ (Types Of Variables)

একটি ভেরিয়েবল হলো একটি অবজেক্টের লেবেল যা আমরা সেই অবজেক্টটি এক্সেস করতে ব্যবহার করি। একটি ভেরিয়েবলকে একটি অবজেক্টের সাথে অ্যাসোসিয়েট করার প্রক্রিয়াকে "ভেরিয়েবল অ্যাসাইনমেন্ট" বলা হয়।

উদাহরণ:

a = 1

রুবিতে আমরা ভিন্ন ধরনের ভেরিয়েবল ব্যবহার করি।

এখানে একটি তালিকা:

  • লোকাল ভেরিয়েবল (something)
  • ইনস্ট্যান্স ভেরিয়েবল (@something)
  • কনস্ট্যান্টস (Something / SOMETHING)
  • গ্লোবাল ভেরিয়েবল ($something)

মূল পার্থক্য হলো আপনি কোন লোকেশন থেকে সেগুলো এক্সেস করতে পারেন।

%w, %i, %q, %r, %x

অবজেক্ট তৈরি করার একটি স্পেশাল সিনট্যাক্স আছে, পারসেন্টেজ সিম্বল (%)। এটি একটি শর্টকাট যা আপনার কাজ বাঁচাতে পারে।

রুবিতে %w দেখলে এখন আপনি জানবেন এর মানে কী!

উদাহরণ:

array_of_strings = %w(apple orange coconut)
array_of_symbols = %i(a b c)
string = %q(things)
regular_expression = %r([0-9])
  • %w - স্ট্রিংসের অ্যারে তৈরি করুন
  • %i - সিম্বলসের অ্যারে তৈরি করুন
  • %q - কোটেশন মার্ক ছাড়া স্ট্রিং তৈরি করুন

মনে রাখবেন যে পারসেন্টেজ সিম্বল (%) মডুলো ম্যাথম্যাটিক্যাল অপারেটর হিসেবেও ব্যবহার হয়।

প্যারেন্থেসিসের ব্যবহার (Use of Parenthesis)

রুবিতে প্যারেন্থেসিস ও সেমিকোলন আবশ্যক নয়, কিন্তু ব্যবহার করা যায়।

কিছু বেসিক নিয়ম:

  • আর্গুমেন্ট ছাড়া মেথড ডিফাইন করার সময় প্যারেন্থেসিস ব্যবহার করবেন না => def foo
  • মেথড আর্গুমেন্টসহ প্যারেন্থেসিস ব্যবহার করুন => def foo(a, b, c)
  • অপারেশনের প্রেসিডেন্স বা প্রায়োরিটি পরিবর্তন করতে চাইলে প্যারেন্থেসিস ব্যবহার করুন => (a.size + b.size) * 2

রিডেবিলিটি প্যারেন্থেসিসের একটি ব্যবহার, অপারেশন অর্ডার পরিবর্তন আরেকটি।

উদাহরণ (Examples)

সাধারণ রুবি সিনট্যাক্সের উদাহরণ।

মেথড ডেফিনিশন (Method definition)

def backup_database
  # method body
end

মেথড সম্পর্কে আরও:

  • https://www.rubyguides.com/2018/06/rubys-method-arguments/
  • https://www.rubyguides.com/2019/06/ruby-method-definition/

ক্লাস ডেফিনিশন (Class definition)

class Fruit
  # methods
end

ক্লাস সম্পর্কে আরও:

  • https://www.rubyguides.com/2019/02/ruby-class/
  • https://www.rubyguides.com/2019/01/what-is-inheritance-in-ruby/

টার্নারি অপারেটর (Ternary operator)

true ? "yes" : "no"

স্ট্রিং ইন্টারপোলেশন (String interpolation)

fruit = "orange"
puts "I have an #{fruit}. Would you like a slice of it?"

ইন্টারপোলেশন সম্পর্কে আরও:

  • https://www.rubyguides.com/2019/07/ruby-string-concatenation/

ব্লকসহ Each (Each with block)

[1,2,3].each do |n|
  puts n
end

If / Else

n = 20
if n > 1
  puts "Greater than 1"
else
  puts "Less than 1"
end

কেস স্টেটমেন্ট (Case statement)

case 20
when 1..20
  puts "Between 1 & 20"
when 21..40
  puts "Between 21 & 40"
else
  puts "Not within a valid range"
end

যেখানে 1..20 একটি Range অবজেক্ট।

সারসংক্ষেপ (Summary)

আপনি রুবি সিনট্যাক্সের বেসিক শিখেছেন যাতে আপনি রুবি প্রোগ্রাম লিখতে পারেন! এগুলো বারবার রিভিউ করুন যতক্ষণ না এটি আপনার ব্রেইনে বিল্ট-ইন হয়ে যায়।

আপনি সিনট্যাক্স এলিমেন্টের সাধারণ নামের এই তালিকাও পছন্দ করতে পারেন।

পড়ার জন্য ধন্যবাদ। 🙂

  1. রুবি ডেভেলপারদের জন্য অপরিহার্য ডেটা স্ট্রাকচার: একটি প্র্যাক্টিক্যাল গাইড

  2. Rack বোঝা: রুবি ওয়েব ফ্রেমওয়ার্কের ব্যাকবোন

  3. রুবি NLP: ইনসাইটফুল টেক্সট মাইনিং-এর জন্য N-gram অ্যানালাইসিস মাস্টার করুন

  4. Broadcast Receivers 습득: নেটওয়ার্ক পরিবর্তন শনাক্ত করার Новиস গাইড