রুবিতে প্রশ্ন চিহ্ন অপারেটরের উদ্দেশ্য কী?
কখনও কখনও এটি প্রদর্শিত হয়:
assert !product.valid?
কখনও কখনও এটি একটি ifনির্মাণে হয়।
রুবিতে প্রশ্ন চিহ্ন অপারেটরের উদ্দেশ্য কী?
কখনও কখনও এটি প্রদর্শিত হয়:
assert !product.valid?
কখনও কখনও এটি একটি ifনির্মাণে হয়।
উত্তর:
এটি একটি কোড শৈলী কনভেনশন; এটি নির্দেশ করে যে কোনও পদ্ধতি একটি বুলিয়ান মান দেয়।
প্রশ্ন চিহ্নটি কোনও পদ্ধতির নামের শেষে একটি বৈধ অক্ষর।
?রুবিতে আরও কয়েকটি ব্যবহার রয়েছে (একটি চৌম্বক অপারেটর, একটি চরিত্রকে তার ASCII পূর্ণসংখ্যায় রূপান্তর করে, testRegEx'es ইত্যাদিতে ব্যবহার করে ) যার অনেকগুলি এখানে অন্যান্য উত্তরে অন্তর্ভুক্ত রয়েছে।
isEmpty(), isDigit()ইত্যাদি রুবি, একই পদ্ধতি লিখিত হবে empty?, এবং digit?যা বেশ একটু সুন্দর আইএমও হয়।
isসব সময় ব্যবহার । এটি সুইফট থেকে আসা কারও পক্ষে খুব বিভ্রান্তিকর হতে পারে যেহেতু সেখানে প্রশ্ন চিহ্নটি ব্যবহার করা হয় nullable:)
?একটি অক্ষরের পাশাপাশি নোট করুন , এর জন্য ASCII অক্ষর কোডটি ফিরিয়ে দেবেA
উদাহরণ স্বরূপ:
?F # => will return 70
পর্যায়ক্রমে রুবি ১.৮ এ আপনি করতে পারেন:
"F"[0]
বা রুবি ১.৯ এ:
"F".ord
এছাড়াও লক্ষ্য করুন যে ?Fস্ট্রিংটি ফিরে আসবে "F", সুতরাং কোডটি আরও ছোট করার জন্য আপনি ?F.ordরুবি ১.৯ এও একই ফলাফল পেতে পারেন "F".ord।
'F'
আপনার উদাহরণে এটি পদ্ধতির নামের একটি অংশ। রুবিতে আপনি পদ্ধতির নামে উদ্দীপনা পয়েন্টগুলিও ব্যবহার করতে পারেন!
রুবিতে প্রশ্ন চিহ্নের আরেকটি উদাহরণ হ'ল টেরিনারি অপারেটর।
customerName == "Fred" ? "Hello Fred" : "Who are you?"
আপনার উদাহরণে
product.valid?
আসলে একটি ফাংশন কল এবং নামক একটি ফাংশন কল valid?। কনভেনশন অনুসারে ফাংশন নামের অংশ হিসাবে কিছু নির্দিষ্ট ধরণের "শর্তের জন্য পরীক্ষা" / বুলিয়ান ফাংশনগুলির একটি প্রশ্ন চিহ্ন থাকে।
এটি উল্লেখ করার মতো হতে পারে যে ?কেবলমাত্র নামের নামগুলিতে অনুমোদিত হয়, ভেরিয়েবলগুলি নয়। রুবি শেখার প্রক্রিয়ায়, আমি ধরে নিয়েছি যে ?একটি বুলিয়ান রিটার্ন টাইপকে মনোনীত করেছি তাই আমি এগুলিকে ফ্ল্যাগ ভেরিয়েবলগুলিতে যুক্ত করার চেষ্টা করেছি, যার ফলে ত্রুটি হয়েছে। এটি আমাকে ভ্রান্তভাবে কিছুক্ষণের জন্য বিশ্বাস করতে পরিচালিত করেছিল যে ?এস এর সাথে জড়িত কিছু বিশেষ বাক্য গঠন রয়েছে ।
প্রাসঙ্গিক: কেন একটি পদ্ধতির নাম দিয়ে `? With দিয়ে একটি চলক নাম শেষ হতে পারে না?
আমি বিশ্বাস করি এটি বুলিয়ান যে জিনিসগুলির জন্য এটি কেবল একটি সম্মেলন। " IsValid" বলার মতো কিছুটা ।
এটি নিয়মিত প্রকাশেও ব্যবহৃত হয়, যার অর্থ "পূর্ববর্তী চরিত্রের সর্বাধিক এক পুনরাবৃত্তি"
উদাহরণস্বরূপ নিয়মিত /hey?/ প্রকাশটি " he" এবং " hey" স্ট্রিংয়ের সাথে মেলে ।
কার্নেল # পরীক্ষা থেকে পরীক্ষা পদ্ধতির প্রথম যুক্তির সাথে ব্যবহার করাও একটি সাধারণ সম্মেলন
irb(main):001:0> test ?d, "/dev" # directory exists?
=> true
irb(main):002:0> test ?-, "/etc/hosts", "/etc/hosts" # are the files identical
=> true
যেমন এখানে এই প্রশ্নে দেখা
test, ?dএটি একটি শর্টকাট "d"। testএটি প্রথম যুক্তির হিসাবে ওয়ান-চর স্ট্রিং নেয়, যাতে আপনি এটির সাথে test ?d, "/dev"বা কল করতে পারেন test "d", "/dev"।