الفرق بين المراجعتين ل"Ruby/TracePoint/defined class"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>defined_class‎</code> الخاص بالصنف <code>TracePoint</code> في روبي}}</noinclude> تصنيف: Ruby...')
 
سطر 3: سطر 3:
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby TracePoint]]
 
[[تصنيف: Ruby TracePoint]]
يُعيد التابع <code>defined_class</code> صنف أو وحدة التابع الذي يتم استدعاؤه.
+
يُعيد التابع <code>defined_class</code> صنف أو وحدة التابع المُستدعى.<syntaxhighlight lang="ruby">class C; def foo; end; end
 +
trace = TracePoint.new(:call) do |tp|
 +
  p tp.defined_class #=> C
 +
end.enable do
 +
  C.new.foo
 +
end</syntaxhighlight>إذا تم تعريف التابع بواسطة وحدة، فستعاد تلك الوحدة.<syntaxhighlight lang="ruby">module M; def foo; end; end
 +
class C; include M; end;
 +
trace = TracePoint.new(:call) do |tp|
 +
  p tp.defined_class #=> M
 +
end.enable do
 +
  C.new.foo
 +
end</syntaxhighlight>'''ملحوظة''':
  
 
 
إذا تم تعريف التابع بواسطة وحدة، فستعاد تلك الوحدة.
 
 
 
 
ملحوظة:
 
 
يُعيد التابع <code>[[Ruby/TracePoint/defined_class|defined_class]]</code> صنفًا مفردًا (singleton class).
 
يُعيد التابع <code>[[Ruby/TracePoint/defined_class|defined_class]]</code> صنفًا مفردًا (singleton class).
  
وسيط الكتلة السادس في التابع <code>[[Ruby/Kernel/set_trace_func|Kernel#set_trace_func]]</code> يمرر صنفًا أصليًا للكائن عبر الصنف المفرد.
+
وسيط الكتلة السادس في التابع <code>[[Ruby/Kernel/set_trace_func|Kernel#set_trace_func]]</code> يمرر الصنف الأصليً (original class) للكائن عبر الصنف المفرد.
  
هذا أحد الفوارق بين <code>[[Ruby/Kernel/set_trace_func|Kernel#set_trace_func]]</code> و <code>[[Ruby/TracePoint|TracePoint]]</code>.
+
هذا أحد الفوارق بين <code>[[Ruby/Kernel/set_trace_func|Kernel#set_trace_func]]</code> و <code>[[Ruby/TracePoint|TracePoint]]</code>.
 
==البنية العامة==
 
==البنية العامة==
<syntaxhighlight lang="ruby"></syntaxhighlight>
+
<syntaxhighlight lang="ruby">defined_class()</syntaxhighlight>
 
==القيمة المُعادة==
 
==القيمة المُعادة==
 +
يُعيد التابع <code>defined_class</code> صنف أو وحدة التابع المُستدعى.
 +
 
==أمثلة==
 
==أمثلة==
 
مثال على استخدام التابع <code>defined_class‎</code>:
 
مثال على استخدام التابع <code>defined_class‎</code>:
<syntaxhighlight lang="ruby">class C; def foo; end; end
+
<syntaxhighlight lang="ruby">class C; def self.foo; end; end
 
trace = TracePoint.new(:call) do |tp|
 
trace = TracePoint.new(:call) do |tp|
   p tp.defined_class #=> C
+
   p tp.defined_class #=> #<Class:C>
 
end.enable do
 
end.enable do
   C.new.foo
+
   C.foo
end‎</syntaxhighlight>
+
end</syntaxhighlight>
 
==انظر أيضا==
 
==انظر أيضا==
 
* التابع <code>[[Ruby/TracePoint/callee_id|callee_id]]</code>: يُعيد التابع <code>callee_id</code> اسم الاستدعاء الخاص بالتابع الذي يتم استدعاؤه
 
* التابع <code>[[Ruby/TracePoint/callee_id|callee_id]]</code>: يُعيد التابع <code>callee_id</code> اسم الاستدعاء الخاص بالتابع الذي يتم استدعاؤه
* التابع <code>[[Ruby/TracePoint/disable|disable]]</code>: يعطل التابع <code>disable</code> التعقب.
 
 
==مصادر==
 
==مصادر==
 
*[http://ruby-doc.org/core-2.5.1/TracePoint.html#method-i-defined_class قسم  التابع defined_class‎ في الصنف TracePoint‎ في توثيق روبي الرسمي.]
 
*[http://ruby-doc.org/core-2.5.1/TracePoint.html#method-i-defined_class قسم  التابع defined_class‎ في الصنف TracePoint‎ في توثيق روبي الرسمي.]

مراجعة 22:43، 7 نوفمبر 2018

يُعيد التابع defined_class صنف أو وحدة التابع المُستدعى.

class C; def foo; end; end
trace = TracePoint.new(:call) do |tp|
  p tp.defined_class #=> C
end.enable do
  C.new.foo
end

إذا تم تعريف التابع بواسطة وحدة، فستعاد تلك الوحدة.

module M; def foo; end; end
class C; include M; end;
trace = TracePoint.new(:call) do |tp|
  p tp.defined_class #=> M
end.enable do
  C.new.foo
end

ملحوظة:

يُعيد التابع defined_class صنفًا مفردًا (singleton class).

وسيط الكتلة السادس في التابع Kernel#set_trace_func يمرر الصنف الأصليً (original class) للكائن عبر الصنف المفرد.

هذا أحد الفوارق بين Kernel#set_trace_func و TracePoint.

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

defined_class()

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

يُعيد التابع defined_class صنف أو وحدة التابع المُستدعى.

أمثلة

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

class C; def self.foo; end; end
trace = TracePoint.new(:call) do |tp|
  p tp.defined_class #=> #<Class:C>
end.enable do
  C.foo
end

انظر أيضا

  • التابع callee_id: يُعيد التابع callee_id اسم الاستدعاء الخاص بالتابع الذي يتم استدعاؤه

مصادر