القيم المنطقية في Ruby
nil وfalse
القيم المنطقية في Ruby درس مجاني في Ruby Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ruby Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ما معنى truthiness؟
لا تتطلب Ruby قيمة منطقية صارمة داخل الشرط. إذ تُعامل أي قيمة على أنها truthy أو falsy. إن معرفة هذه القاعدة تمنع الأخطاء الدقيقة.
if "hello"
puts "Strings are truthy"
endقيمتان فقط من نوع falsy
قاعدة Ruby بسيطة للغاية: القيمتان false وnil فقط هما من نوع falsy. أما كل ما عداهما فهو truthy.
puts "nil is falsy" unless nil
puts "false is falsy" unless falseالصفر truthy
على خلاف العديد من اللغات، تكون القيمة 0 من نوع truthy في Ruby. وينطبق الأمر نفسه على السلسلة النصية الفارغة والمصفوفة الفارغة. انتبهوا إلى ذلك إذا كنتم قادمين من C أو Python.
if 0
puts "0 is truthy in Ruby"
end
if ""
puts "empty string is truthy too"
endتعرّفوا على nil
تمثّل nil غياب قيمة. وغالبًا ما تعيد الأساليب nil عندما لا يوجد ما تعيده، مثلما يحدث عند غياب مفتاح من hash.
user = { name: "Ada" }
puts user[:email].inspect # missing key returns nilالتحقق من nil
استخدموا nil? للاختبار صراحةً. فهي تعيد true للقيمة nil فقط.
x = nil
y = 0
puts x.nil?
puts y.nil?المعامل &&
يعيد && أول معامل falsy، أو يعيد المعامل الأخير إذا كانت جميع المعاملات truthy. وهو يستخدم التقييم قصير الدارة: فلا يُقيَّم الجانب الأيمن إذا كان الجانب الأيسر falsy.
puts (nil && "never").inspect
puts ("a" && "b").inspectالمعامل ||
يعيد || أول معامل truthy. وهذا يجعله مثاليًا للقيم الافتراضية.
name = nil
display = name || "Guest"
puts displayالإسناد الشرطي ||=
يسند a ||= b القيمة b إلى a فقط إذا كانت a حاليًا nil أو false. وهذه هي الطريقة الاصطلاحية لتعيين قيمة افتراضية.
config = {}
config[:timeout] ||= 30
config[:timeout] ||= 99 # already set, ignored
puts config[:timeout]احذروا من القيمة الافتراضية falsy
بما أن false قيمة falsy، يمكن لـ || أن يستبدل قيمة false المشروعة. وعندما تكون false ذات معنى، استخدموا nil? بدلًا من ذلك.
enabled = false
result = enabled || true # oops, becomes true
puts result
safe = enabled.nil? ? true : enabled
puts safeمعامل التنقل الآمن
يستدعي &. أسلوبًا فقط إذا لم يكن الكائن المستقبل هو nil؛ وإلا فإنه يعيد nil بدلًا من إطلاق خطأ.
name = nil
puts name&.upcase.inspect # no NoMethodError
name = "ruby"
puts name&.upcaseتجميع المفاهيم
تتيح لكم قواعد truthiness كتابة تعليمات برمجية موجزة ومعبرة، لكن تذكّروا الحالات الخاصة:
- القيمتان
nilوfalseفقط هما من نوع falsy. - القيم
0و""و[]كلها truthy. - استخدموا
nil?عندما تكون قيمةfalseالحقيقية مهمة.
values = [0, "", [], nil, false]
values.each do |v|
puts "#{v.inspect} => #{v ? "truthy" : "falsy"}"
endتحقق سريع
اختبروا فهمكم لـ truthiness في Ruby.
مراجعة
لقد تعلمتم truthiness في Ruby:
- القيمتان
nilوfalseفقط هما من نوع falsy. - تتحقق
nil?من nil صراحةً. - يعيد
&&و||المعاملات ويستخدمان التقييم قصير الدارة. - يعيّن
||=القيم الافتراضية، ويحمي&.من المستقبلات التي تساوي nil.
username = nil
username ||= "anonymous"
puts "Welcome, #{username}"الأسئلة الشائعة
هل درس «القيم المنطقية في Ruby» مجاني؟
نعم — نص درس «القيم المنطقية في Ruby» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ruby Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ماذا ستتعلم في «القيم المنطقية في Ruby»؟
nil وfalse تتمرن على Ruby Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Ruby Academy؟
لا تُشترط خبرة سابقة. Ruby Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «القيم المنطقية في Ruby»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Ruby Academy هذا؟
نعم. كل درس في Ruby Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- if وunless وternary
- تعبيرات case/when
- القيم المنطقية في Ruby
- عبارات الحراسة