কম্পিউটার

#শূন্য?, #খালি?, #খালি? এবং #বর্তমানের মধ্যে পার্থক্য?

রুবি এবং রেলের বিভিন্ন পদ্ধতি রয়েছে যা একটি মান বা বস্তুর অবস্থার অস্তিত্ব পরীক্ষা করতে ব্যবহার করা যেতে পারে। রুবি #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 ড্রপ করতে দ্বিধা করবেন না।


  1. ক্রোমিয়াম এবং ক্রোমের মধ্যে শীর্ষ 12টি পার্থক্য

  2. Su, Sudo Su, Sudo -s এবং Sudo -i এর মধ্যে পার্থক্য

  3. বিটকয়েন এবং ইথেরিয়ামের মধ্যে পার্থক্য

  4. স্পটিফাই এবং অ্যাপল মিউজিকের মধ্যে ৬টি পার্থক্য