صفحة الصنف Location
في روبي
< Ruby
تمثّل كائنات الصنف 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
.