الفرق بين المراجعتين لصفحة: «Ruby/Object/clone»
طلا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) ط ←freeze |
||
سطر 1: | سطر 1: | ||
{{DISPLAYTITLE:التابع <code>Object.clone</code> في روبي}} | {{DISPLAYTITLE:التابع <code>Object.clone</code> في روبي}} | ||
يُنتج التابع <code>clone</code> نسخةً سطحيةً (shallow copy) من الكائن المعطى. تُنسَخ متغيرات النسخة (instance variables) ولكن لا تُنسَخ الكائنات التي تشير إليها. يَنسَخ التابع <code>clone</code> حالة الكائن المجمدة (إلا إذا كان وسيط الكلمة المفتاحية <code>freez:</code> مساويًا للقيمة <code>falsefalse</code>) والتالفة (tainted). انظر أيضًا النقاش في صفحة التابع <code>Object.dup</code>. | يُنتج التابع <code>clone</code> نسخةً سطحيةً (shallow copy) من الكائن المعطى. تُنسَخ متغيرات النسخة (instance variables) ولكن لا تُنسَخ الكائنات التي تشير إليها. يَنسَخ التابع <code>clone</code> حالة الكائن المجمدة (إلا إذا كان وسيط الكلمة المفتاحية <code>freez:</code> مساويًا للقيمة <code>falsefalse</code>) والتالفة (tainted). انظر أيضًا النقاش في صفحة التابع <code>Object.dup</code>. | ||
سطر 12: | سطر 13: | ||
=== <code>freeze</code> === | === <code>freeze</code> === | ||
وسيطُ | وسيطُ مسمى (keyword argument) يأخذ القيمة <code>true</code> أو <code>false</code>، إذ يحدِّد إن كان يراد نسخ حالة الكائن المجمَّدة. | ||
== القيم المعادة == | == القيم المعادة == |
المراجعة الحالية بتاريخ 07:11، 30 مارس 2019
يُنتج التابع 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\">"
انظر أيضًا
- التابع
tap
: يُدخل الكائن المعطى إلى الكتلة ثم يعيده. - التابع
yield_self
: يُدخل الكائن المعطى إلى الكتلة ويُعيد ناتج تنفيذ هذه الكتلة.