রুবিতে প্রশ্ন চিহ্ন অপারেটরের উদ্দেশ্য কী?
কখনও কখনও এটি প্রদর্শিত হয়:
assert !product.valid?
কখনও কখনও এটি একটি if
নির্মাণে হয়।
রুবিতে প্রশ্ন চিহ্ন অপারেটরের উদ্দেশ্য কী?
কখনও কখনও এটি প্রদর্শিত হয়:
assert !product.valid?
কখনও কখনও এটি একটি if
নির্মাণে হয়।
উত্তর:
এটি একটি কোড শৈলী কনভেনশন; এটি নির্দেশ করে যে কোনও পদ্ধতি একটি বুলিয়ান মান দেয়।
প্রশ্ন চিহ্নটি কোনও পদ্ধতির নামের শেষে একটি বৈধ অক্ষর।
?
রুবিতে আরও কয়েকটি ব্যবহার রয়েছে (একটি চৌম্বক অপারেটর, একটি চরিত্রকে তার ASCII পূর্ণসংখ্যায় রূপান্তর করে, test
RegEx'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"
।