الفرق بين المراجعتين ل"Ruby/Method/curry"

من موسوعة حسوب
< Ruby‏ | Method
اذهب إلى التنقل اذهب إلى البحث
(مراجعة وتدقيق)
 
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع <code>curry‎</code> الخاص بالصنف <code>Method</code> في روبي}}</noinclude>
+
<noinclude>{{DISPLAYTITLE: التابع <code>Method.curry‎</code> في روبي}}</noinclude>
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
+
[[تصنيف: Ruby Method Class]]
يعيد <code>curry</code> كائن <code>proc</code> مُجزّء (curried proc) انطلاقا من التابع الذي استُدعي معه. عندما يكون عدد الوسائط الممررة إلى الكتلة <code>proc</code> أقل من رتبة (arity) التابع، فستعاد كتلة <code>proc</code> مجزءة أخرى. ولن يُستدعى التابع فعليًا إلا عندما يتم توفير الوسائط الكافية لإمضاء (signature) التابع.
+
يعيد <code>curry</code> كائن <code>[[Ruby/Proc|proc]]</code> مُجزّء (curried proc) انطلاقًا من التابع الذي استُدعي معه. عندما يكون عدد الوسائط الممررة إلى الكتلة [[Ruby/Proc|<code>proc</code>]] أقل من رتبة (arity) التابع، فستعاد كتلة [[Ruby/Proc|<code>proc</code>]] مجزءة أخرى. ولن يُستدعى التابع فعليًا إلا عندما يتم توفير الوسائط الكافية لتوقيع التابع (method signature).
  
يجب توفير الوسيط الاختياري <code>arity</code> إن أردت تجزئة (currying) التوابع التي تقبل عددًا متغيرا من الوسائط لتحديد عدد الوسائط المطلوبة قبل استدعاء التابع فعليًا
+
يجب توفير الوسيط الاختياري <code>arity</code> إن أردت تجزئة (currying) التوابع التي تقبل عددًا متغيرًا من الوسائط لتحديد عدد الوسائط المطلوبة قبل استدعاء التابع فعليًا.
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="ruby">curry  → proc
 
<syntaxhighlight lang="ruby">curry  → proc
سطر 12: سطر 12:
 
===<code>arity‎</code>===
 
===<code>arity‎</code>===
  
في حال التوابع التي تقبل عددًا متغيرا من الوسائط، يحدد <code>arity‎</code> عدد الوسائط المطلوبة قبل استدعاء التابع فعليًا.
+
في حال التوابع التي تقبل عددًا متغيرًا من الوسائط، يحدد المعامل <code>arity‎</code> عدد الوسائط المطلوبة قبل استدعاء التابع فعليًا.
==القيمة المُعادة==
+
==القيمة المعادة==
يعيد <code>curry</code> كائن <code>proc</code> مُجزّء (curried proc) انطلاقا من التابع الذي استُدعي معه.
+
يعاد كائن من النوع [[Ruby/Proc|<code>proc</code>]] مُجزّء (curried proc) انطلاقًا من التابع الذي استُدعي معه.
  
 
==أمثلة==
 
==أمثلة==
سطر 35: سطر 35:
  
 
==مصادر==
 
==مصادر==
*[http://ruby-doc.org/core-2.5.1/Method.html#method-i-curry قسم التابع curry‎ في الصنف Method‎ في توثيق روبي الرسمي.]
+
*[http://ruby-doc.org/core-2.5.1/Method.html#method-i-curry قسم التابع curry‎ في الصنف Method‎ في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 05:31، 18 نوفمبر 2018

يعيد curry كائن proc مُجزّء (curried proc) انطلاقًا من التابع الذي استُدعي معه. عندما يكون عدد الوسائط الممررة إلى الكتلة proc أقل من رتبة (arity) التابع، فستعاد كتلة proc مجزءة أخرى. ولن يُستدعى التابع فعليًا إلا عندما يتم توفير الوسائط الكافية لتوقيع التابع (method signature).

يجب توفير الوسيط الاختياري arity إن أردت تجزئة (currying) التوابع التي تقبل عددًا متغيرًا من الوسائط لتحديد عدد الوسائط المطلوبة قبل استدعاء التابع فعليًا.

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

curry   proc
curry(arity)  proc

المعاملات

arity‎

في حال التوابع التي تقبل عددًا متغيرًا من الوسائط، يحدد المعامل arity‎ عدد الوسائط المطلوبة قبل استدعاء التابع فعليًا.

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

يعاد كائن من النوع proc مُجزّء (curried proc) انطلاقًا من التابع الذي استُدعي معه.

أمثلة

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

def foo(a,b,c)
  [a, b, c]
end
proc  = self.method(:foo).curry
proc2 = proc.call(1, 2)          #=> #<Proc>
proc2.call(3)                    #=> [1,2,3]
def vararg(*args)
  args
end
proc = self.method(:vararg).curry(4)
proc2 = proc.call(:x)      #=> #<Proc>
proc3 = proc2.call(:y, :z) #=> #<Proc>
proc3.call(:a)             #=> [:x, :y, :z, :a]‎

انظر أيضا

  • التابع clone: يعيد نسخة من التابع الذي استُدعي معه.

مصادر