রুবির ব্লকগুলির জন্য do endবনাম চয়ন করার জন্য দুটি সাধারণ শৈলী রয়েছে { }:
প্রথম এবং খুব সাধারণ স্টাইলটি রুবেলটি রিলে জনপ্রিয় করেছিলেন এবং এটি একক বনাম বহু-লাইনের একটি সাধারণ নিয়মের উপর ভিত্তি করে:
{ }একক-লাইন ব্লকের জন্য বন্ধনী ব্যবহার করুন
do endমাল্টি-লাইন ব্লকগুলির জন্য ব্যবহার করুন
এটি বোঝা যায় কারণ ডু / এন্ডটি একটি লাইনারে খারাপভাবে পড়ে, তবে মাল্টি-লাইন ব্লকের জন্য, }নিজের লাইনে একটি ক্লোজিং ঝুলিয়ে endরাখা রুবিতে ব্যবহার করা সমস্ত কিছু যেমন মডিউল, শ্রেণি এবং পদ্ধতির সংজ্ঞা ( defইত্যাদি) এর সাথে সামঞ্জস্য নয় inc ।) এবং নিয়ন্ত্রণ কাঠামো (if , while, case, ইত্যাদি)
দ্বিতীয়, কম-ঘন ঘন দেখা শৈলীটি শব্দার্থক হিসাবে পরিচিত, বা " ওয়েইরিচ ধনুর্বন্ধনী " প্রয়াত, মহান রুবিবাদক জিম ওয়েইরিচের প্রস্তাবিত:
do endপদ্ধতিগত ব্লকগুলির জন্য ব্যবহার করুন
- ধনুর্বন্ধনী ব্যবহার করুন
{ }ক্রিয়ামূলক ব্লকের জন্য ব্যবহার
এর অর্থ হ'ল যখন ব্লকটি তার ফেরতের মূল্যের জন্য মূল্যায়ন করা হয় , তখন এটি {}শৃঙ্খলাবদ্ধ হওয়া উচিত, এবং ধনুর্বন্ধনীগুলি পদ্ধতিতে শৃঙ্খলার জন্য আরও সার্থক করে তোলে।
অন্যদিকে, যখন ব্লকটি তার পার্শ্ব-প্রতিক্রিয়াগুলির জন্য মূল্যায়ন করা হয় , তারপরে রিটার্নের মান কোনও ফল হয় না এবং ব্লকটি কেবল "কিছু করা" হয়, তাই এটি বেঁধে রাখা অর্থহীন নয়।
সিনট্যাক্সের এই পার্থক্যটি ব্লকের মূল্যায়ন সম্পর্কে ভিজ্যুয়াল অর্থ বোঝায়, এবং এর রিটার্নের মানটি আপনার যত্ন নেওয়া উচিত কি না।
উদাহরণস্বরূপ, এখানে প্রতিটি আইটেমের জন্য ব্লকের রিটার্ন মান প্রয়োগ করা হয়:
items.map { |i| i.upcase }
তবে, এখানে এটি ব্লকের রিটার্ন মান ব্যবহার করছে না। এটি প্রক্রিয়াগতভাবে পরিচালনা করছে এবং এটির সাথে একটি পার্শ্ব-প্রতিক্রিয়া করছে:
items.each do |item|
puts item
end
শব্দার্থক শৈলীর আর একটি সুবিধা হ'ল ব্লকটিতে একটি লাইন যুক্ত হওয়ার কারণে আপনার করণীয় / শেষ করার জন্য ধনুর্বন্ধনী পরিবর্তন করতে হবে না।
পর্যবেক্ষণ হিসাবে, কাকতালীয়ভাবে কার্যকরী ব্লকগুলি প্রায়শই এক-লাইনার এবং প্রক্রিয়াগত ব্লকগুলি (যেমন কনফিগারেশন) বহু-লাইন হয় are সুতরাং, ওয়েইরিচ শৈলী অনুসরণ করে রেলের স্টাইলের মতো প্রায় একই সন্ধান করা শেষ হবে।