الفرق بين المراجعتين لصفحة: «Ruby/UnboundMethod»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: صفحة الصنف <code>UnboundMethod</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby UnboundMethodروبي ت...' |
لا ملخص تعديل |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: صفحة الصنف <code>UnboundMethod</code> في روبي}}</noinclude> | <noinclude>{{DISPLAYTITLE: صفحة الصنف <code>UnboundMethod</code> في روبي}}</noinclude> | ||
[[تصنيف: Ruby]] | [[تصنيف: Ruby]] | ||
[[تصنيف: Ruby UnboundMethod]]روبي تدعم شكلين من التوابع الكائنية (objectified methods). يستخدم | [[تصنيف: Ruby UnboundMethod]] | ||
روبي تدعم شكلين من التوابع الكائنية (objectified methods). يستخدم [[Ruby/Class|الصنف]] <code>Method</code> لتمثيل التوابع المرتبطة بكائن معين، يمكن إنشاء كائنات التوابع من هذا النوع عبر <code>[[Ruby/Object/method|Object#method]]</code>. | |||
تدعم روبي أيضًا التوابع | تدعم روبي أيضًا التوابع الحرة (unbound methods)؛ وهي كائنات توابع غير مرتبطة بكائن معين. يمكن إنشاؤها إما عن طريق استدعاء <code>[[Ruby/Module/instance method|Module#instance_method]]</code>، أو عن طريق استدعاء <code>unbind</code> على تابع مرتبط (bound method object). نتيجة كليهما ستكون تابعا حرا (<code>UnboundMethod</code>). | ||
لا يمكن استدعاء التوابع الحرة إلا بعد | لا يمكن استدعاء التوابع الحرة إلا بعد ربطها بكائن ما. ويجب أن يعيد التعبير <code>UnboundMethod.kind_of? A</code> القيمة <code>true</code>، حيث <code>A</code> يمثل الصنف الأصلي للتابع.<syntaxhighlight lang="ruby">class Square | ||
<syntaxhighlight lang="ruby">class Square | |||
def area | def area | ||
@side * @side | @side * @side | ||
سطر 17: | سطر 17: | ||
s = Square.new(12) | s = Square.new(12) | ||
area = area_un.bind(s) | area = area_un.bind(s) | ||
area.call #=> 144</syntaxhighlight> | area.call #=> 144</syntaxhighlight>التوابع الحرة ستكون مرجعًا للتوابع عند ربطها: لن تؤثر التغييرات اللاحقة على الصنف الأساسي على التابع الحر.<syntaxhighlight lang="ruby">class Test | ||
التوابع الحرة ستكون مرجعًا للتوابع عند ربطها: لن تؤثر التغييرات اللاحقة على الصنف الأساسي على التابع الحر. | |||
<syntaxhighlight lang="ruby">class Test | |||
def test | def test | ||
:original | :original | ||
سطر 33: | سطر 31: | ||
t.test #=> :modified | t.test #=> :modified | ||
um.bind(t).call #=> :original</syntaxhighlight> | um.bind(t).call #=> :original</syntaxhighlight> | ||
==توابع | ==توابع النسخة العامة (Public Instance Methods)== | ||
===[[Ruby/UnboundMethod/ | ===[[Ruby/UnboundMethod/equality operator| التابع ==]]=== | ||
معامل التساوي. | |||
===[[Ruby/UnboundMethod/arity | التابع arity]]=== | ===[[Ruby/UnboundMethod/arity| التابع arity]]=== | ||
يعيد | يعيد معامل الرتبة arity مؤشرا لعدد الوسائط المقبولة من قبل التابع. | ||
===[[Ruby/UnboundMethod/bind | التابع bind]]=== | ===[[Ruby/UnboundMethod/bind| التابع bind]]=== | ||
يربط التابع <code>bind</code> [[Ruby/UnboundMethod|التابع الحر]] | يربط التابع <code>bind</code> [[Ruby/UnboundMethod|التابع الحر]] بالكائن المعطى. | ||
===[[Ruby/UnboundMethod/clone | التابع clone]]=== | ===[[Ruby/UnboundMethod/clone| التابع clone]]=== | ||
يعيد التابع <code>clone</code> نسخة من هذا التابع. | يعيد التابع <code>clone</code> نسخة من هذا التابع. | ||
===[[Ruby/UnboundMethod/eql-3F | التابع eql?]]=== | ===[[Ruby/UnboundMethod/eql-3F| التابع eql?]]=== | ||
يتحقق من تساوي تابعين. | |||
===[[Ruby/UnboundMethod/hash | التابع hash]]=== | ===[[Ruby/UnboundMethod/hash| التابع hash]]=== | ||
يعيد التابع <code>hash</code> رمز التكويد (hash) المقابل [[Ruby/UnboundMethod|التابع الحر]] الذي استُدعي معه. | يعيد التابع <code>hash</code> رمز التكويد (hash) المقابل [[Ruby/UnboundMethod|التابع الحر]] الذي استُدعي معه. | ||
===[[Ruby/UnboundMethod/inspect | التابع inspect]]=== | ===[[Ruby/UnboundMethod/inspect| التابع inspect]]=== | ||
يعيد التابع <code>inspect</code> اسم التابع الأصلي (underlying method). | يعيد التابع <code>inspect</code> اسم التابع الأصلي (underlying method). | ||
===[[Ruby/UnboundMethod/name | التابع name]]=== | ===[[Ruby/UnboundMethod/name| التابع name]]=== | ||
يعيد التابع <code>name</code> اسم التابع. | يعيد التابع <code>name</code> اسم التابع. | ||
===[[Ruby/UnboundMethod/ | ===[[Ruby/UnboundMethod/original name| التابع original_name]]=== | ||
يعيد التابع <code>original_name</code> الاسم الأصلي [[Ruby/UnboundMethod|التابع الحر]] الذي استُدعي معه. | يعيد التابع <code>original_name</code> الاسم الأصلي [[Ruby/UnboundMethod|التابع الحر]] الذي استُدعي معه. | ||
===[[Ruby/UnboundMethod/owner | التابع owner]]=== | ===[[Ruby/UnboundMethod/owner| التابع owner]]=== | ||
يعيد التابع <code>owner</code> الصنف أو الوحدة (module) التي تعرف [[Ruby/UnboundMethod|التابع الحر]]. | يعيد التابع <code>owner</code> الصنف أو الوحدة (module) التي تعرف [[Ruby/UnboundMethod|التابع الحر]]. | ||
===[[Ruby/UnboundMethod/parameters | التابع parameters]]=== | ===[[Ruby/UnboundMethod/parameters| التابع parameters]]=== | ||
يعيد التابع <code>parameters</code> معلومات عن وسائط [[Ruby/UnboundMethod|التابع الحر]] الذي استُدعي معه. | يعيد التابع <code>parameters</code> معلومات عن وسائط [[Ruby/UnboundMethod|التابع الحر]] الذي استُدعي معه. | ||
===[[Ruby/UnboundMethod/ | ===[[Ruby/UnboundMethod/source location| التابع source_location]]=== | ||
يعيد التابع <code>source_location</code> اسم الملف المصدر لروبي ورقم السطر الذي يحتوي | يعيد التابع <code>source_location</code> اسم الملف المصدر لروبي ورقم السطر الذي يحتوي هذا التابع. | ||
===[[Ruby/UnboundMethod/ | ===[[Ruby/UnboundMethod/super method| التابع super_method]]=== | ||
يعيد التابع <code>super_method</code> كائنا من النوع <code>[[Ruby/Method|Method]]</code> للصنف الأب (superclass)، حتى يمكن استدعاؤه عند استخدام | يعيد التابع <code>super_method</code> كائنا من النوع <code>[[Ruby/Method|Method]]</code> للصنف الأب (superclass)، حتى يمكن استدعاؤه عند استخدام <code>super</code>. | ||
===[[Ruby/UnboundMethod/ | ===[[Ruby/UnboundMethod/to s| التابع to_s]]=== | ||
يعيد <code>to_s</code> اسم التابع الأصلي (underlying method). | |||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/UnboundMethod.html قسم الصنف UnboundMethod في توثيق روبي الرسمي.] | *[http://ruby-doc.org/core-2.5.1/UnboundMethod.html قسم الصنف UnboundMethod في توثيق روبي الرسمي.] |
مراجعة 11:44، 8 نوفمبر 2018
روبي تدعم شكلين من التوابع الكائنية (objectified methods). يستخدم الصنف Method
لتمثيل التوابع المرتبطة بكائن معين، يمكن إنشاء كائنات التوابع من هذا النوع عبر Object#method
.
تدعم روبي أيضًا التوابع الحرة (unbound methods)؛ وهي كائنات توابع غير مرتبطة بكائن معين. يمكن إنشاؤها إما عن طريق استدعاء Module#instance_method
، أو عن طريق استدعاء unbind
على تابع مرتبط (bound method object). نتيجة كليهما ستكون تابعا حرا (UnboundMethod
).
لا يمكن استدعاء التوابع الحرة إلا بعد ربطها بكائن ما. ويجب أن يعيد التعبير UnboundMethod.kind_of? A
القيمة true
، حيث A
يمثل الصنف الأصلي للتابع.
class Square
def area
@side * @side
end
def initialize(side)
@side = side
end
end
area_un = Square.instance_method(:area)
s = Square.new(12)
area = area_un.bind(s)
area.call #=> 144
التوابع الحرة ستكون مرجعًا للتوابع عند ربطها: لن تؤثر التغييرات اللاحقة على الصنف الأساسي على التابع الحر.
class Test
def test
:original
end
end
um = Test.instance_method(:test)
class Test
def test
:modified
end
end
t = Test.new
t.test #=> :modified
um.bind(t).call #=> :original
توابع النسخة العامة (Public Instance Methods)
التابع ==
معامل التساوي.
التابع arity
يعيد معامل الرتبة arity مؤشرا لعدد الوسائط المقبولة من قبل التابع.
التابع bind
يربط التابع bind
التابع الحر بالكائن المعطى.
التابع clone
يعيد التابع clone
نسخة من هذا التابع.
التابع eql?
يتحقق من تساوي تابعين.
التابع hash
يعيد التابع hash
رمز التكويد (hash) المقابل التابع الحر الذي استُدعي معه.
التابع inspect
يعيد التابع inspect
اسم التابع الأصلي (underlying method).
التابع name
يعيد التابع name
اسم التابع.
التابع original_name
يعيد التابع original_name
الاسم الأصلي التابع الحر الذي استُدعي معه.
التابع owner
يعيد التابع owner
الصنف أو الوحدة (module) التي تعرف التابع الحر.
التابع parameters
يعيد التابع parameters
معلومات عن وسائط التابع الحر الذي استُدعي معه.
التابع source_location
يعيد التابع source_location
اسم الملف المصدر لروبي ورقم السطر الذي يحتوي هذا التابع.
التابع super_method
يعيد التابع super_method
كائنا من النوع Method
للصنف الأب (superclass)، حتى يمكن استدعاؤه عند استخدام super
.
التابع to_s
يعيد to_s
اسم التابع الأصلي (underlying method).