سؤال

هذا هو Bugging لي لبعض الوقت.

>> nil.id
(irb):2: warning: Object#id will be deprecated; use Object#object_id
=> 4

لماذا سيكون nil.id 4؟ (أو nil.Object_id إذا كنت تريد أن تكون محرضا حول الاستهلاط)

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

المحلول

هذا لأن NIL هو كائن تم إنشاؤه عند تهيئة اللغة، ويحدث معرف هذا الكائن أن يكون دائما 4.

لمزيد من المعلومات حول سبب حدوث المعرف 4، انظر هذه مشاركة مدونة.

نصائح أخرى

كنت أفترض دائما أنه كان بيضة عيد الفصح بارد: في اليابان 4 هو عدد الوفاة.

يحدث ذلك لأن معرف كل كائن كان له ممثلا بطريقة أو بأخرى في مترجم روبي C. حصلت الأرقام المعينة على (العدد * 2) +1، حصلت على الصدق 0، حصلت falseness على 2 ولديها 4 اليسار. إنها مجرد مشكلة في التنفيذ الغريب أو التجريد المتسراعي. يجب أن لا تقلق بشأن ذلك إلا إذا كنت ترغب في كتابة مترجم روبي.

إذا كنت تحاول ذلك في IRB، فأنت تحصل على 4

irb
>> NIL.id
(irb):7: warning: Object#id will be deprecated; use Object#object_id
=> 4

في Ruby Japanese People، يقوم الأشخاص اليابانيين بتسليم أساليب NIL، إرجاع 4 معيار اللغة التي تحددها 4 ك "خطر" أو "وفاة"

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top