التابع Object.clone في روبي

من موسوعة حسوب
< Ruby‏ | Object
مراجعة 15:55، 22 نوفمبر 2018 بواسطة محمد-خطيب (نقاش | مساهمات) (أنشأ الصفحة ب'{{DISPLAYTITLE:التابع Object.clone في روبي}} يُنتج التابع <code>clone</code> نسخةً سطحيةً (shallow copy) من الكائن المعط...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث


يُنتج التابع clone نسخةً سطحيةً (shallow copy) من الكائن المعطى. تُنسَخ متغيرات النسخة (instance variables) ولكن لا تُنسَخ الكائنات التي تشير إليها. يَنسَخ التابع clone حالة الكائن المجمدة (إلا إذا كان وسيط الكلمة المفتاحية freez: مساويًا للقيمة falsefalse) والتالفة (tainted). انظر أيضًا النقاش في صفحة التابع Object.dup.

قد يمتلك هذا التابع سلوكًا  محدّدًا بالصنف (class-specific). إذا كان كذلك، سيُوثَّق السلوك تحت التابع ‎.initialize_copy من نفس الصنف.

البنية العامة

clone(freeze: true) → an_object

المعاملات

freeze

وسيطُ كلمةٍ مفتاحيةٍ (keyword argument) يأخذ القيمة true أو false، إذ يحدِّد إن كان يراد نسخ حالة الكائن المجمَّدة.

القيم المعادة

تعاد نسخةٌ سطحيةٌ من الكائن المعطى.

أمثلة

مثالٌ عن استخدام التابع clone:

class Klass

  attr_accessor :str

end

s1 = Klass.new      #=> #<Klass:0x401b3a38>

s1.str = "Hello"    #=> "Hello"

s2 = s1.clone       #=> #<Klass:0x401b3998 @str="Hello">

s2.str[1,4] = "i"   #=> "i"

s1.inspect          #=> "#<Klass:0x401b3a38 @str=\"Hi\">"

s2.inspect          #=> "#<Klass:0x401b3998 @str=\"Hi\">"

انظر أيضًا

  • التابع class: يعيد صنف الكائن المعطى.
  • التابع dup: ينتج نسخةً سطحية من الكائن.
  • التابع tap: يُدخل الكائن المعطى إلى الكتلة ثم يعيده.
  • التابع yield_self: يُدخل الكائن المعطى إلى الكتلة ويُعيد ناتج تنفيذ هذه الكتلة.

مصادر