الفرق بين المراجعتين لصفحة: «Ruby/Module/module function»

من موسوعة حسوب
< Ruby‏ | Module
لا ملخص تعديل
ط مراجعة وتدقيق.
 
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع <code>module_function‎</code> الخاص بالصنف <code>Module</code> في روبي}}</noinclude>
<noinclude>{{DISPLAYTITLE: التابع <code>Module.module_function‎</code> في روبي}}</noinclude>
[[تصنيف: Ruby]]
[[تصنيف: Ruby]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Module]]
[[تصنيف: Ruby Module Class]]
ينشئ التابع <code>module_function</code> دوال وحدة (module functions) للتابع المعطى. يمكن استدعاء هذه الدوال مع الوحدة كمُستقبِلات (receiver)، كما يمكن أن تصير متاحة كتوابع نسخة (instance methods) للأصناف التي تُمزج (mix) في الوحدة. دوال النوع <code>[[Ruby/Module|Module]]</code> هي نسخ من الدالة الأصلية، وبالتالي يمكن تغييرها بشكل مستقل.  
ينشئ التابع <code>module_function</code> دوال وحدة (module functions) للتوابع المعطاة. يمكن استدعاء هذه الدوال مع الوحدة كمُستقبِلات (receiver)، كما يمكن أن تصبح متاحةً كتوابع نسخة (instance methods) للأصناف التي تُمزج (mix) في الوحدة. دوال النوع <code>[[Ruby/Module|Module]]</code> هي نسخ من الدوال الأصلية، وبالتالي يمكن تغييرها بشكل مستقل.  


توابع النسخة (instance-method) ستُجعل خاصة. وإذا تم استدعاء التابع <code>module_function</code> دون وسائط، ستصبح التوابع المعرفة لاحقاً دوال وحدة (module functions).  
توابع النسخة (instance-method) ستتحول إلى خاصة. وإذا تم استدعاء التابع <code>module_function</code> دون معاملات، فستصبح التوابع التي ستُعرَّف لاحقًا دوال وحدة (module functions).  


تُحوّل الوسائط النصية إلى رموز.
تُحوّل الوسائط [[Ruby/String|النصية]] إلى [[Ruby/Symbol|رموز]].
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="ruby">module_function(symbol, ...) → self
<syntaxhighlight lang="ruby">module_function(symbol, ...) → self
سطر 13: سطر 13:
==المعاملات==
==المعاملات==
===<code>symbol‎</code>===
===<code>symbol‎</code>===
رمز.
كائن من النوع <code>[[Ruby/Symbol|Symbol]]</code> يمثل اسم الدالة المراد إنشاؤها.


===<code>string‎</code>===
===<code>string‎</code>===


سلسلة نصية.
[[Ruby/String|سلسلة نصية]] تمثل اسم الدالة المراد إنشاؤها.
==القيمة المُعادة==
 
يعيد التابع <code>module_function</code> الكائن الذي استُدعي معه.
<code>...</code>
 
كائن من النوع <code>[[Ruby/Symbol|Symbol]]</code> أو [[Ruby/String|سلسلة نصية]] تمثل اسم الدالة المراد إنشاؤها.
==القيمة المعادة==
يعاد الكائن المعطى.


==أمثلة==
==أمثلة==
سطر 46: سطر 50:
c.call_one  #=> "This is the new one"‎</syntaxhighlight>
c.call_one  #=> "This is the new one"‎</syntaxhighlight>
==انظر أيضا==
==انظر أيضا==
* التابع <code>[[Ruby/Module/module_exec|module_exec]]</code>: يقيّم الكتلة الممررة في سياق الصنف/الوحدة.
* التابع <code>[[Ruby/Module/module_exec|module_exec]]</code>: يقيّم الكتلة الممررة في سياق الصنف/الوحدة.
* التابع <code>[[Ruby/Module/name|name]]</code>: يعيد اسم الوحدة.
* التابع <code>[[Ruby/Module/name|name]]</code>: يعيد اسم الوحدة.


==مصادر==
==مصادر==
*[http://ruby-doc.org/core-2.5.1/Module.html#method-i-module_function قسم التابع module_function‎ في الصنف Module‎ في توثيق روبي الرسمي.]
*[http://ruby-doc.org/core-2.5.1/Module.html#method-i-module_function قسم التابع module_function‎ في الصنف Module‎ في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 15:25، 19 نوفمبر 2018

ينشئ التابع module_function دوال وحدة (module functions) للتوابع المعطاة. يمكن استدعاء هذه الدوال مع الوحدة كمُستقبِلات (receiver)، كما يمكن أن تصبح متاحةً كتوابع نسخة (instance methods) للأصناف التي تُمزج (mix) في الوحدة. دوال النوع Module هي نسخ من الدوال الأصلية، وبالتالي يمكن تغييرها بشكل مستقل.

توابع النسخة (instance-method) ستتحول إلى خاصة. وإذا تم استدعاء التابع module_function دون معاملات، فستصبح التوابع التي ستُعرَّف لاحقًا دوال وحدة (module functions).

تُحوّل الوسائط النصية إلى رموز.

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

module_function(symbol, ...)  self
module_function(string, ...)  self

المعاملات

symbol‎

كائن من النوع Symbol يمثل اسم الدالة المراد إنشاؤها.

string‎

سلسلة نصية تمثل اسم الدالة المراد إنشاؤها.

...

كائن من النوع Symbol أو سلسلة نصية تمثل اسم الدالة المراد إنشاؤها.

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

يعاد الكائن المعطى.

أمثلة

مثال على استخدام التابع module_function‎:

module Mod
  def one
    "This is one"
  end
  module_function :one
end
class Cls
  include Mod
  def call_one
    one
  end
end
Mod.one     #=> "This is one"
c = Cls.new
c.call_one  #=> "This is one"
module Mod
  def one
    "This is the new one"
  end
end
Mod.one     #=> "This is one"
c.call_one  #=> "This is the new one"‎

انظر أيضا

  • التابع module_exec: يقيّم الكتلة الممررة في سياق الصنف/الوحدة.
  • التابع name: يعيد اسم الوحدة.

مصادر