التابع TracePoint.new‎ في روبي

من موسوعة حسوب
مراجعة 05:43، 8 ديسمبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (مراجعة وتدقيق.)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

يُعيد التابع new متعقبًا جديدًا غير مفعَّل افتراضيًّا.

راجع صفحة الصنف TracePoint للتعرف على الأحداث الممكنة ولمزيد من المعلومات.

يجب إعطاء كتلة للتابع، وإلا سيُطلق الاستثناء ArgumentError.

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

new(*events) { |obj| block }  obj

المعاملات

events‎

أحداث يراد إنشاء تعقب لها.

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

يعاد متعقبٌ جديدٌ للأحداث events.

أمثلة

من أجل تفعيل التعقب بعد إنشائه باستعمال التابع new، يجب عليك استخدام التابع enable:

trace = TracePoint.new(:call) do |tp|
    p [tp.lineno, tp.defined_class, tp.method_id, tp.event]
end
#=> #<TracePoint:disabled>

trace.enable
#=> false

puts "Hello, TracePoint!"
# ...
# [48, IRB::Notifier::AbstractNotifier, :printf, :call]
# ...

إن أردت إلغاء التعقب، عليك استخدام التابع disable.

trace.disable

إذا لم يتم تضمين التابع trace في مرشح الأحداث (events filter) المعطاة، فسيُطلق الاستثناء RuntimeError.

TracePoint.trace(:line) do |tp|
    p tp.raised_exception
end
#=> RuntimeError: 'raised_exception' not supported by this event

إذا تم استدعاء التابع trace خارج كتلة، فسيُطلق الاستثناء RuntimeError.

TracePoint.trace(:line) do |tp|
  $tp = tp
end
$tp.lineno #=> access from outside (RuntimeError)

كما يُحظر الدخول من المهام الفرعية الأخرى.

انظر أيضًا

مصادر