اختبار لمتغيرات غير محددة في روبي ل لا جافا سكريبت؟

StackOverflow https://stackoverflow.com/questions/888963

  •  23-08-2019
  •  | 
  •  

سؤال

في جافا سكريبت، هناك طريقة مفيدة لاختبار متغير لم يتم تعريفه أبدا في أي نقطة معينة. على سبيل المثال، سيعود المقتطف التالي من التعليمات البرمجية صحيح إذا كان المتغير بوب. لم يتم تعريفه:

typeof(bob)=='undefined'

كيف يمكنني إنجاز نفس الاختبار في روبي؟

تحرير: أبحث عن اختبار مدمج بنفس القدر في الطبيعة. لقد جاءت مع بعض التقريبات المحرجة باستخدام الاستثناءات، ولكن تلك ليست جميلة جدا!

هل كانت مفيدة؟

المحلول

defined?(variable_name)

irb(main):004:0> defined?(foo)
=> nil
irb(main):005:0> foo = 1
=> 1
irb(main):006:0> defined?(foo)
=> "local-variable"

هنا جيدة اكتب عليه.

نصائح أخرى

defined? هي وظيفة تعود NIL إذا كان العنصر غير محدد.

defined? somevar
=> nil
somevar = 12
defined? somevar
=> "local-variable"

وبالتالي:

if defined?(somevar)
  do_something
end

ضع في اعتبارك أن تحديد؟ إرجاع سلسلة إذا تم تعريف المتغير، لا شيء إذا لم يكن الأمر كذلك، لذلك استخدم التحقق الشرطي على نتائجه. أعتقد أن بناء الجملة يلمح إلى أن يعيد منطقية.

جميع حالات الاستخدام:

defined? ur_variable
=> nil

ur_variable= 12
defined? ur_variable
=> "local-variable"

another_variable = nil
defined? another_variable
=> "local-variable"

يمكن أيضا اختبار هذه الطريقة.

   if somevar.nil
        # not set do something
    else
        # is set do something else
    end
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top