صفحة الصنف Location في روبي

من موسوعة حسوب

تمثّل كائنات الصنف 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 .

مصادر