الفرق بين المراجعتين ل"Ruby/TracePoint/defined class"
< Ruby | TracePoint
اذهب إلى التنقل
اذهب إلى البحث
(أنشأ الصفحة ب'<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 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 | + | C.foo |
− | + | 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> اسم الاستدعاء الخاص بالتابع الذي يتم استدعاؤه | ||
− | |||
==مصادر== | ==مصادر== | ||
*[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
اسم الاستدعاء الخاص بالتابع الذي يتم استدعاؤه