التابع TracePoint.defined_class
في روبي
< Ruby | TracePoint
يُعيد التابع 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
:
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
: يُعيد اسم الاستدعاء الخاص بالتابع الذي يتم استدعاؤه.