الفرق بين المراجعتين ل"Ruby/Location"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: صفحة الصنف <code>Location</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby Locationتمثّل كائنا...')
 
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE: صفحة الصنف <code>Location</code> في روبي}}</noinclude>
 
<noinclude>{{DISPLAYTITLE: صفحة الصنف <code>Location</code> في روبي}}</noinclude>
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby]]
[[تصنيف: Ruby Location]]تمثّل كائنات الصنف [[Ruby/Location|Location]] أُطُر التكديس (stack frames)، وتُنشأ بواسطة <code>[[Ruby/Kernel/caller_locations|Kernel#caller_locations]]</code>.
+
[[تصنيف: Ruby Location]]
 +
تمثّل كائنات الصنف [[Ruby/Location|Location]] أُطُر التكديس (stack frames)، وتُنشأ بواسطة التابع <code>[[Ruby/Kernel/caller_locations|Kernel#caller_locations]]</code>.
  
 
مثلا:
 
مثلا:
سطر 36: سطر 37:
 
init.rb:8:in `new'
 
init.rb:8:in `new'
 
init.rb:8:in `<main>'‎</syntaxhighlight>
 
init.rb:8:in `<main>'‎</syntaxhighlight>
==توابع الصنف العامة (Public Class Methods)==
+
==توابع النسخة العامة (Public Instance Methods)==
 
===[[Ruby/Location/absolute_path | التابع absolute_path]]===
 
===[[Ruby/Location/absolute_path | التابع absolute_path]]===
يُعيد التابع <code>absolute_path</code> مسار الملف الكامل الملف لل[[Ruby/Location|إطار]].
+
يُعيد التابع <code>absolute_path</code> مسار الملف الكامل لل[[Ruby/Location|إطار]].
 
===[[Ruby/Location/base_label | التابع base_label]]===
 
===[[Ruby/Location/base_label | التابع base_label]]===
 
يعيد التابع <code>base_label</code> التسمية الأساسية (base label) لهذا [[Ruby/Location|الإطار]].
 
يعيد التابع <code>base_label</code> التسمية الأساسية (base label) لهذا [[Ruby/Location|الإطار]].
 
===[[Ruby/Location/inspect | التابع inspect]]===
 
===[[Ruby/Location/inspect | التابع inspect]]===
يُعيد التابع <code>inspect</code> نفس نتيجة استدعاء <code>inspect</code> على التمثيل النصي للتابع to_str
+
يُعيد التابع <code>inspect</code> نفس نتيجة استدعاء <code>inspect</code> على التمثيل النصي للتابع <code>to_str</code>
 
===[[Ruby/Location/label | التابع label]]===
 
===[[Ruby/Location/label | التابع label]]===
 
يعيد التابع <code>label</code> تسمية هذا [[Ruby/Location|الإطار]].
 
يعيد التابع <code>label</code> تسمية هذا [[Ruby/Location|الإطار]].

مراجعة 16:10، 6 نوفمبر 2018

تمثّل كائنات الصنف Location أُطُر التكديس (stack frames)، وتُنشأ بواسطة التابع Kernel#caller_locations.

مثلا:

# caller_locations.rb
def a(skip)
  caller_locations(skip)
end
def b(skip)
  a(skip)
end
def c(skip)
  b(skip)
end
c(0..2).map do |call|
  puts call.to_s
end

تشغيل الأمر ruby caller_locations.rb سوف ينتج:

caller_locations.rb:2:in `a'
caller_locations.rb:5:in `b'
caller_locations.rb:8:in `c'

إليك مثالًا آخر بنتيجة مختلفة بعض الشيء:

# foo.rb
class Foo
  attr_accessor :locations
  def initialize(skip)
    @locations = caller_locations(skip)
  end
end
Foo.new(0..2).locations.map do |call|
  puts call.to_s
end

الآن، إن قمت بتنفيذ ruby foo.rb، فيجب أن ترى المخرجات التالية:

init.rb:4:in `initialize'
init.rb:8:in `new'
init.rb:8:in `<main>'

توابع النسخة العامة (Public Instance Methods)

التابع absolute_path

يُعيد التابع absolute_path مسار الملف الكامل للإطار.

التابع base_label

يعيد التابع base_label التسمية الأساسية (base label) لهذا الإطار.

التابع inspect

يُعيد التابع inspect نفس نتيجة استدعاء inspect على التمثيل النصي للتابع to_str

التابع label

يعيد التابع label تسمية هذا الإطار.

التابع lineno

يعيد التابع lineno رقم سطر هذا الإطار.

التابع path

يُعيد اسم ملف هذا الإطار.

التابع to_s

يُعيد التابع to_s سلسلة نصية تمثل هذا الإطار على نمط التابع Kernel#caller .

مصادر