রুবি ইন্টারপ্রেটার হল একটি প্রোগ্রাম যা রুবি কোড পড়ে এবং চালায়।
কিন্তু…
আপনি কি জানেন যে ডিফল্ট রুবি ইন্টারপ্রেটারে (MRI) অনেক আকর্ষণীয় এবং দরকারী কমান্ড-লাইন বিকল্প রয়েছে?
লাইক :
ruby -v
যা আপনাকে রুবি সংস্করণ দেয় যা আপনি এখন ব্যবহার করছেন৷
অথবা -e
পতাকা যা আপনাকে সরাসরি কিছু কোড চালানোর অনুমতি দেয়, কোনো ফাইল ছাড়াই এবং irb
এ না গিয়েও .
এরকম :
ruby -e 'puts 123'
আপনি -h
ব্যবহার করে এই পতাকাগুলি খুঁজে পেতে পারেন .
কিছু "লুকানো" পতাকা আছে যা আপনি শুধুমাত্র --help
দিয়ে দেখতে পারেন .
আমি যা মনে করি তার একটি সারণী এখানে…
সবচেয়ে আকর্ষণীয় পতাকা :
পতাকা | বর্ণনা |
---|---|
-v | রুবি সংস্করণ মুদ্রণ করুন |
-c | সিনট্যাক্স চেক |
-e | কোড সরাসরি চালান |
-w | সতর্কতা সক্ষম করুন |
-r | একটি ফাইল / রত্ন প্রয়োজন |
-I | পাথ লোড করতে ডিরেক্টরি যোগ করুন |
–Frozen-string-literal সক্রিয় করুন | সমস্ত স্ট্রিং নিথর করুন |
–ডাম্প পার্সেট্রি | পার্স ট্রি দেখান |
এগুলি কীভাবে কাজ করে তা দেখতে এই পতাকাগুলির মধ্যে কয়েকটির উপর ফোকাস করা যাক!
সিনট্যাক্স চেক
আপনার যদি কোড থাকে এবং আপনি জানতে চান যে সিনট্যাক্স সঠিক কিনা আপনি -c
ব্যবহার করতে পারেন CLI বিকল্প।
উদাহরণ :
ruby -c code_without_syntax_errors.rb # Syntax OK ruby -c code_with_syntax_errors.rb # syntax error, unexpected tIDENTIFIER, expecting end-of-input
সহজ, কিন্তু এটি কাজ করে 🙂
দ্রুত প্রয়োজন
কখনও কখনও আপনি আপনার ফাইলের উপরে "প্রয়োজনীয়" না লিখে একটি রুবি প্রোগ্রামে অস্থায়ীভাবে একটি রত্ন প্রয়োজন করতে চান৷
একটি ডিবাগিং রত্ন মত.
উদাহরণ :
ruby -rpry code.rb
খুব সহায়ক!
সতর্ক পতাকা
সতর্কতা পতাকা ব্যবহার করলে লিন্টিং সক্ষম হবে এবং আপনার কোডের সাথে সম্ভাব্য সমস্যা দেখাবে।
উদাহরণস্বরূপ, এই কোডটি :
p @test
আপনি যখন ruby -w
ব্যবহার করেন তখন নিম্নলিখিত সতর্কতা প্রিন্ট করে :
warning: instance variable @test not initialized
এটি একটি ভাল সতর্কতা!
কারণ আপনি প্রথমে একটি মান না দিয়ে একটি ইনস্ট্যান্স ভেরিয়েবল ব্যবহার করার চেষ্টা করছেন।
অথবা আপনার একটি ইনস্ট্যান্স ভেরিয়েবলের নামে একটি টাইপ হতে পারে, যা এই পতাকাটি আপনাকে সমস্যা হওয়ার আগে খুঁজে পেতে সহায়তা করতে পারে৷
সমাধান সহজ৷ :
@test = nil
এখানে আরেকটি উদাহরণ:
c = 1
এটি আপনাকে দেবে :
warning: assigned but unused variable - c
এই সতর্কতা ঠিক করতে আপনি হয় পরিবর্তনশীল মুছে ফেলতে পারেন অথবা এটি ব্যবহার করতে পারেন।
এটি শুধুমাত্র স্থানীয় ভেরিয়েবলের জন্য কাজ করে .
কিন্তু আপনার জানা উচিত যে ব্লক আর্গুমেন্টের ভিতরে একটি আন্ডারস্কোর (_
)।
উদাহরণ :
{ chocolate: 82 }.map { |k, _| k }
এটি রুবিতে একটি সাধারণ সম্মেলন৷
৷
_
বিশেষ নয়, এটি শুধুমাত্র একটি বৈধ পরিবর্তনশীল নাম।
আরো সতর্কতার উদাহরণ
নিম্নলিখিত কোডের ফলাফল একটি পদ্ধতি থেকে ফেরত দেওয়া হচ্ছে না, বা কোনো ভেরিয়েবলকে বরাদ্দ করা হচ্ছে না।
2 * 2
রুবি আপনাকে এভাবে সতর্ক করে :
warning: possibly useless use of * in void context
সমাধান?
অকেজো বিবৃতি মুছুন, অথবা এটি একটি ভেরিয়েবলে বরাদ্দ করুন৷
৷এখন এই পদ্ধতিটি দেখি :
def orange(weight, quantity) # ... end
orange
কল করার বিভিন্ন উপায় আছে :
orange 100, 2 orange(100, 2) orange *[100, 2] orange(*[100, 2])
আপনি যদি orange *[100, 2]
ব্যবহার করেন সতর্কতার সাথে আপনি এটি পাবেন:
warning: '*' interpreted as argument prefix
কি হচ্ছে?
অস্পষ্টতা।
রুবি মনে করে আপনি মানে orange * [100, 2]
, orange *[100, 2]
এর পরিবর্তে .
*
এর মধ্যবর্তী স্থান &[
একটি পার্থক্য করে কারণ এটি *
-কে সংযুক্ত করে অ্যারে (স্প্ল্যাট অপারেটর) সহ যদি এটি অনুপস্থিত থাকে, বা এটি মনে করে *
এটি একটি পদ্ধতি কল যদি এটি উপস্থিত থাকে।
তাই হ্যাঁ, এই ক্ষেত্রে, স্থান গুরুত্বপূর্ণ৷৷
আপনি অন্য যেকোনো উপায়ে পদ্ধতিটিকে কল করে এই সতর্কতাটি ঠিক করতে পারেন।
এখন :
-w
দিয়ে আপনার নিজের কিছু কোড চালান পতাকা এবং কিছু সতর্কতা মুছে এটি উন্নত করুন 🙂
পড়ুন-ইভাল-প্রিন্ট-লুপ
আপনি সম্ভবত irb এবং pry এর সাথে পরিচিত, তারা উভয়ই যাকে আমরা REPL বলি।
-n
ব্যবহার করে -e
এর সাথে মিলিত পতাকা ফ্ল্যাগ আপনি খুব কম কোডের সাথে অনুরূপ প্রভাব পেতে পারেন।
এখানে একটি উদাহরণ আছে :
echo 'bacon\nchocolate\norange' | ruby -ne 'puts $_.upcase' # BACON # CHOCOLATE # ORANGE
এটি echo
থেকে ইনপুট নেয় , তারপর প্রতিটি লাইনের জন্য এটি আপনার কোড কল করে (puts $_.upcase
)।
যেখানে $_
একটি বিশেষ পরিবর্তনশীল যা gets
দ্বারা পড়া শেষ ইনপুট মান ধারণ করে .
দ্য ফ্রোজেন স্ট্রিং লিটারাল ফ্ল্যাগ
রুবি 2.3 হিমায়িত স্ট্রিং আক্ষরিক "ম্যাজিক মন্তব্য" চালু করেছে।
এটা এরকম দেখাচ্ছে :
# frozen_string_literal: true
এটি আপনার সমস্ত স্ট্রিং হিমায়িত করবে৷ , তাদের অপরিবর্তনীয় করে (পরিবর্তন করা যাবে না)।
এটি করার আরেকটি উপায় হল --enable frozen-string-literal
পাস করা রুবিতে পতাকা৷
এই কোড :
str = "abcdef" str[0] = "b"
আপনি যখন সেই পতাকাটি ব্যবহার করেন তখন এই ত্রুটির ফলাফল:
can't modify frozen String (FrozenError)
কিন্তু আপনি যদি স্ট্রিং পরিবর্তন করতে চান?
তাহলে আপনি এটি করতে পারেন৷ :
str = "abcdef".dup
বা এটি :
str = +"abcdef"
উভয়ই আপনাকে কাজ করার জন্য একটি নন-ফ্রোজেন স্ট্রিং দেয়৷
সারাংশ
আপনি রুবির কমান্ড-লাইন বিকল্পগুলি সম্পর্কে শিখেছেন, সংস্করণ পতাকা, সতর্কীকরণ পতাকা এবং হিমায়িত স্ট্রিং লিটারেল সহ। এই সমস্ত পতাকাগুলি দরকারী হতে পারে, সেগুলি চেষ্টা করে দেখুন!
৷এই নিবন্ধটি শেয়ার করতে ভুলবেন না যাতে আরও বেশি মানুষ এটি থেকে উপকৃত হতে পারে।
পড়ার জন্য ধন্যবাদ 🙂