রুবি এবং রেলের বিভিন্ন পদ্ধতি রয়েছে যা একটি মান বা বস্তুর অবস্থার অস্তিত্ব পরীক্ষা করতে ব্যবহার করা যেতে পারে। রুবি #nil?
প্রদান করে এবং #empty?
, এবং Rails এর ActiveSupport যোগ করে #blank?
এবং #present?
. এই সমস্তগুলি তাদের নিজস্ব উপায়ে কাজ করে এবং প্রতিটি কীভাবে ডেটা মূল্যায়ন করে তা জানা গুরুত্বপূর্ণ কারণ আপনার কোডে ভুল পদ্ধতি ব্যবহার করলে অপ্রত্যাশিত ফলাফল হতে পারে৷
এই নিবন্ধে, আমরা এই পদ্ধতি সম্পর্কে আপনার জ্ঞান রিফ্রেশ করব। আমরা (পুনরায়) শিখব যে কোন শর্তগুলি পাস বা ব্যর্থ হয় যখন প্রতিটি ব্যবহার করা হয় এবং সেইসাথে প্রতিটি পদ্ধতি ব্যবহার করা যেতে পারে এমন বস্তুর ধরন। আমরা শেষ পর্যন্ত একটি সহজ চিট শীট নিক্ষেপ করব!
#শূন্য?
#nil?
Object
এ একটি রুবি পদ্ধতি ক্লাস যেহেতু সমস্ত ক্লাস এই ক্লাস থেকে উত্তরাধিকারসূত্রে পাওয়া যায়, #nil?
যেকোনো বস্তুতে ব্যবহার করা যেতে পারে। এটি true
প্রদান করে nil
এর জন্য (ক্লাসের একটি উদাহরণ NilClass
) এবং অন্য সবকিছুর জন্য মিথ্যা।
nil.nil?
=> true
true.nil?
=> false
5.nil?
=> false
"".nil?
=> false
[].nil?
=> false
#খালি?
#empty?
একটি পদ্ধতি যা স্ট্রিং, অ্যারে, হ্যাশ এবং সেটগুলিতে ব্যবহার করা যেতে পারে। এটি true
প্রদান করে যদি বস্তুর উদাহরণের দৈর্ঘ্য শূন্য থাকে।
স্ট্রিংগুলিতে ব্যবহার করা হলে, এটি true
প্রদান করে খালি স্ট্রিংগুলির জন্য৷
"".empty?
=> true
মনে রাখবেন যে হোয়াইটস্পেস অক্ষরগুলি অক্ষর এবং তাই #empty?
ব্যবহার করে শুধুমাত্র সাদা স্থান ধারণকারী একটি স্ট্রিং এ false
ফিরে আসবে . এই কারণে, পাঠ্য যাচাই করার সময় এটি ব্যবহার করার সর্বোত্তম পদ্ধতি নাও হতে পারে। আপনি যদি শুধুমাত্র ব্যবহারকারীর ইনপুট যাচাই করার জন্য এই পদ্ধতিটি ব্যবহার করেন, উদাহরণস্বরূপ, আপনি ইনপুট প্রক্রিয়াকরণ শেষ করতে পারেন যাতে শুধুমাত্র সাদা স্থান থাকে৷
" ".empty?
=> false
"\t\n".empty?
=> false
অ্যারে, হ্যাশ এবং সেটের জন্য, এটি true
প্রদান করে যদি তাদের কোন উপাদান না থাকে।
[].empty?
=> true
{}.empty?
=> true
require 'set'
Set.new.empty?
=> true
কখন #empty?
nil
এ ব্যবহৃত হয় বা অন্য কোনো ক্লাসে যে পদ্ধতিটি নেই, একটি NoMethodError
ব্যতিক্রম উত্থাপিত হবে। তাই আপনার ডেটা পরীক্ষা করার জন্য এটি ব্যবহার করতে, আপনার প্রোগ্রাম কখনই ক্র্যাশ না হয় তা নিশ্চিত করার জন্য আপনাকে আরও পরীক্ষা করতে হবে৷
if !my_var.nil? && !my_var.empty?
# make use of my_var
end
ব্যবহার করার জন্য একটি ভাল পদ্ধতি হবে রেল #blank?
পদ্ধতি, যা আমরা এখন দেখব।
#খালি?
#empty?
একটি রেল পদ্ধতি (ActiveSupport-এ)। এটি যেকোন বস্তুতে কাজ করে।
স্ট্রিংয়ের জন্য, এটি true
ফেরত দেবে খালি স্ট্রিং এবং সেইসাথে শুধুমাত্র সাদা স্থান অক্ষর ধারণকারী স্ট্রিং জন্য।
"".blank?
=> true
" ".blank?
=> true
"\n\t".blank?
=> true
অ্যারে, হ্যাশ এবং সেটের জন্য, এটি ঠিক #empty?
এর মত কাজ করে , এতে এটি true
প্রদান করে যদি তাদের কোন উপাদান না থাকে।
[].blank?
=> true
{}.blank?
=> true
Set.new.blank?
=> true
[nil].blank?
=> false
["", ""].blank?
=> false
person = {:firstName => "John", :lastName => "Doe"}
person.blank?
=> false
এটি false
ফেরত দেয় true
এর জন্য এবং true
যেকোনো মিথ্যা শর্তের জন্য (যেমন nil
এবং false
)।
true.blank?
=> false
false.blank?
=> true
nil.blank?
=> true
আপনি দেখতে পাচ্ছেন, #blank?
ব্যবহার করা ভাল পরিবর্তে #empty?
ডেটা যাচাই করার ক্ষেত্রে কারণ এটি NoMethodErrors
সৃষ্টি করবে না যখন কিছু বস্তুতে ব্যবহার করা হয় যেহেতু এটি সমস্ত বস্তুর জন্য উপলব্ধ। এটি শুধুমাত্র হোয়াইটস্পেস ধারণ করে এমন স্ট্রিংগুলির জন্যও পাস করবে না৷
#বর্তমান?
#present?
এছাড়াও একটি রেল পদ্ধতি। এটা কি #blank?
এর বিপরীত করে করে।
!my_var.blank? == my_var.present?
=> true
এখানে কিছু উদাহরণ আছে:
"".present?
=> false
" ".present?
=> false
[].present?
=> false
nil.present?
=> false
true.present?
=> true
false.present?
=> false
{}.present?
=> false
person = {:firstName => "John", :lastName => "Doe"}
person.present?
=> true
5.present?
=> true
এটি #empty?
এর চেয়ে বৈধকরণের জন্য একটি ভাল পদ্ধতি একই কারণে আমরা #blank?
এর জন্য কভার করেছি .
উপসংহারে
যেহেতু এই পদ্ধতিগুলির নামকরণ বিভ্রান্তিকর হতে থাকে, তাই বুকমার্ক করার জন্য এখানে একটি সহজ চিট শীট রয়েছে৷
#nil? | #empty? | #empty? | #present? | |
---|---|---|---|---|
5 | false | NoMethodError | false | true |
"" | false | true | true | false |
" " | false | false | true | false |
"\t\n" | false | false | true | false |
[] | false | true | true | false |
["a"] | false | false | false | true |
{} | false | true | true | false |
{a: "b"} | false | false | false | true |
Set.new | false | true | true | false |
nil | true | NoMethodError | true | false |
true | false | NoMethodError | false | true |
false | false | NoMethodError | true | false |
সবকিছুর মতো, #nil?
-এর মধ্যে পছন্দ , #empty?
, #empty?
এবং #present?
পরিস্থিতির উপর নির্ভর করে. একজন ব্যবহারকারীর কাছে তাদের সম্বোধন করার জন্য একটি নাম আছে কিনা তা পরীক্ষা করার জন্য, #present?
একটি ভাল ফিট হতে পারে, উদাহরণস্বরূপ. তবে #empty?
এবং #present
সমস্ত অবজেক্টের জন্য একটি বুলিয়ান ফেরত দিন, যা ভুল টাইপের মান হলে ত্রুটি না বাড়িয়ে কোডে বাগ লুকিয়ে রাখতে পারে।
আমরা আশা করি রুবিতে মান পরীক্ষা করার সময় আমরা আপনার স্মৃতিকে রিফ্রেশ করেছি। যদি আপনার কোন প্রশ্ন বা মন্তব্য থাকে, তাহলে আমাদের একটি লাইন @AppSignal ড্রপ করতে দ্বিধা করবেন না।