الفرق بين المراجعتين لصفحة: «Ruby/TracePoint/new»
< Ruby | TracePoint
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>new</code> الخاص بالصنف <code>TracePoint</code> في روبي}}</noinclude> تصنيف: Ruby تصن...' |
جميل-بيلوني (نقاش | مساهمات) ط مراجعة وتدقيق. |
||
| (مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة) | |||
| سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: التابع <code>new | <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|TracePoint]]</code> للتعرف على الأحداث الممكنة ولمزيد من المعلومات. | |||
يجب إعطاء كتلة للتابع، وإلا سيُطلق الاستثناء <code>[[Ruby/ArgumentError|ArgumentError]]</code>. | |||
يجب إعطاء | |||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="ruby">new(*events) { |obj| block } → obj</syntaxhighlight> | <syntaxhighlight lang="ruby">new(*events) { |obj| block } → obj</syntaxhighlight> | ||
==المعاملات== | ==المعاملات== | ||
===<code>events</code>=== | ===<code>events</code>=== | ||
==القيمة | أحداث يراد إنشاء تعقب لها. | ||
==أمثلة== | |||
==القيمة المعادة== | |||
<syntaxhighlight lang="ruby">trace = TracePoint.new(:call) do |tp| | يعاد [[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 | ||
#=> #<TracePoint:disabled> | #=> #<TracePoint:disabled> | ||
trace.enable | trace.enable | ||
#=> false | #=> false | ||
puts "Hello, TracePoint!" | puts "Hello, TracePoint!" | ||
# ... | # ... | ||
# [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/trace|trace]]</code> في مرشح الأحداث (events filter) المعطاة، فسيُطلق الاستثناء <code>[[Ruby/RuntimeError|RuntimeError]]</code>.<syntaxhighlight lang="ruby">TracePoint.trace(:line) do |tp| | |||
p tp.raised_exception | |||
end | |||
#=> RuntimeError: 'raised_exception' not supported by this event | |||
</syntaxhighlight>إذا تم استدعاء التابع <code>trace</code> خارج كتلة، فسيُطلق الاستثناء <code>[[Ruby/RuntimeError|RuntimeError]]</code>.<syntaxhighlight lang="ruby">TracePoint.trace(:line) do |tp| | |||
$tp = tp | |||
end | |||
$tp.lineno #=> access from outside (RuntimeError) | |||
</syntaxhighlight>كما يُحظر الدخول من [[Ruby/Thread|المهام الفرعية]] الأخرى. | |||
==انظر أيضًا== | |||
* التابع <code>[[Ruby/TracePoint/stat|stat]]</code>: يُعيد المعلومات الداخلية لل[[Ruby/TracePoint|متعقب]]. | |||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/TracePoint.html#method-c-new قسم | *[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)
كما يُحظر الدخول من المهام الفرعية الأخرى.