0Pricing
Ruby Academy · درس

القيم المنطقية في 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. if وunless وternary
  2. تعبيرات case/when
  3. القيم المنطقية في Ruby
  4. عبارات الحراسة
← العودة إلى Ruby Academy