الفرق بين المراجعتين لصفحة: «Ruby/TracePoint/new»

من موسوعة حسوب
لا ملخص تعديل
ط مراجعة وتدقيق.
 
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع <code>new‎</code> الخاص بالصنف <code>TracePoint</code> في روبي}}</noinclude>
<noinclude>{{DISPLAYTITLE: التابع <code>TracePoint.new‎</code> في روبي}}</noinclude>
[[تصنيف: Ruby]]
[[تصنيف: Ruby]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby TracePoint]]
[[تصنيف: Ruby TracePoint]]
يُعيد التابع <code>new</code> [[Ruby/TracePoint|متعقب]]ا جديدًا، غير متاح افتراضيا.
يُعيد التابع <code>new</code> [[Ruby/TracePoint|متعقبً]]ا جديدًا غير مفعَّل افتراضيًّا.


من أجل إتاحة التعقب، يجب عليك استخدام <code>[[Ruby/TracePoint/enable|enable]]</code><syntaxhighlight lang="ruby">trace = TracePoint.new(:call) do |tp|
راجع صفحة الصنف <code>[[Ruby/TracePoint|TracePoint]]</code> للتعرف على الأحداث الممكنة ولمزيد من المعلومات.
 
يجب إعطاء كتلة للتابع، وإلا سيُطلق الاستثناء <code>[[Ruby/ArgumentError|ArgumentError]]</code>.
==البنية العامة==
<syntaxhighlight lang="ruby">new(*events) { |obj| block } → obj‎</syntaxhighlight>
==المعاملات==
===<code>events‎</code>===
أحداث يراد إنشاء تعقب لها.
 
==القيمة المعادة==
يعاد [[Ruby/TracePoint|متعقبٌ]] جديدٌ للأحداث <code>events</code>.
 
== أمثلة ==
من أجل تفعيل التعقب بعد إنشائه باستعمال التابع <code>new</code>، يجب عليك استخدام التابع <code>[[Ruby/TracePoint/enable|enable]]</code>:<syntaxhighlight lang="ruby">trace = TracePoint.new(:call) do |tp|
     p [tp.lineno, tp.defined_class, tp.method_id, tp.event]
     p [tp.lineno, tp.defined_class, tp.method_id, tp.event]
end
end
سطر 16: سطر 29:
# ...
# ...
# [48, IRB::Notifier::AbstractNotifier, :printf, :call]
# [48, IRB::Notifier::AbstractNotifier, :printf, :call]
# ...</syntaxhighlight>إن أردت إلغاء التعقب، عليك استخدام <code>[[Ruby/TracePoint/disable|disable]]</code><syntaxhighlight lang="ruby">trace.disable
# ...</syntaxhighlight>إن أردت إلغاء التعقب، عليك استخدام التابع <code>[[Ruby/TracePoint/disable|disable]]</code>.<syntaxhighlight lang="ruby">trace.disable
</syntaxhighlight>راجع صفحة الصنف <code>[[Ruby/TracePoint/label-Events|TracePoint]]</code> للتعرف على الأحداث الممكنة ولمزيد من المعلومات.
</syntaxhighlight>إذا لم يتم تضمين التابع <code>[[Ruby/TracePoint/trace|trace]]</code> في مرشح الأحداث (events filter) المعطاة، فسيُطلق الاستثناء <code>[[Ruby/RuntimeError|RuntimeError]]</code>.<syntaxhighlight lang="ruby">TracePoint.trace(:line) do |tp|
 
يجب إعطاء كتلة، وإلا سيُطلق الاستثناء <code>[[Ruby/ArgumentError|ArgumentError]]</code>.
 
إذا لم يتم تضمين التابع <code>[[Ruby/TracePoint/trace|trace]]</code> في مرشح الأحداث (events filter) المعطاة، فسيُطلق الاستثناء <code>[[Ruby/RuntimeError|RuntimeError]]</code>.<syntaxhighlight lang="ruby">TracePoint.trace(:line) do |tp|
     p tp.raised_exception
     p tp.raised_exception
end
end
#=> RuntimeError: 'raised_exception' not supported by this event
#=> RuntimeError: 'raised_exception' not supported by this event


</syntaxhighlight>إذا تم استدعاء التابع trace خارج كتلة، فسيُطلق <code>[[Ruby/RuntimeError|RuntimeError]]</code>.<syntaxhighlight lang="ruby">TracePoint.trace(:line) do |tp|
</syntaxhighlight>إذا تم استدعاء التابع <code>trace</code> خارج كتلة، فسيُطلق الاستثناء <code>[[Ruby/RuntimeError|RuntimeError]]</code>.<syntaxhighlight lang="ruby">TracePoint.trace(:line) do |tp|
   $tp = tp
   $tp = tp
end
end
$tp.lineno #=> access from outside (RuntimeError)
$tp.lineno #=> access from outside (RuntimeError)
</syntaxhighlight>كما يُحظر الدخول من [[Ruby/Thread|المهام الفرعية]] الأخرى.
</syntaxhighlight>كما يُحظر الدخول من [[Ruby/Thread|المهام الفرعية]] الأخرى.
==البنية العامة==
==انظر أيضًا==
<syntaxhighlight lang="ruby">new(*events) { |obj| block } → obj‎</syntaxhighlight>
* التابع <code>[[Ruby/TracePoint/stat|stat]]</code>: يُعيد المعلومات الداخلية لل[[Ruby/TracePoint|متعقب]].
==المعاملات==
===<code>events‎</code>===
أحداث.
 
==القيمة المُعادة==
يُعيد التابع <code>new</code> [[Ruby/TracePoint|متعقب]]ا جديدًا، :
 
==انظر أيضا==
* التابع <code>[[Ruby/TracePoint/stat|stat]]</code>: يُعيد التابع <code>stat</code> المعلومات الداخلية لل[[Ruby/TracePoint|متعقب]].
==مصادر==
==مصادر==
*[http://ruby-doc.org/core-2.5.1/TracePoint.html#method-c-new قسم التابع new‎ في الصنف TracePoint‎ في توثيق روبي الرسمي.]
*[http://ruby-doc.org/core-2.5.1/TracePoint.html#method-c-new قسم التابع new‎ في الصنف TracePoint‎ في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 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)

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

انظر أيضًا

مصادر