الصنف 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>'
توابع النسخة العامة
absolute_path
يُعيد مسار الملف الكامل للإطار.
base_label
يعيد التسمية الأساسية (base label) لهذا الإطار.
inspect
يُعيد نفس نتيجة استدعاء inspect
مع السلسلة النصية التي يعيدها التابع to_str
.
label
يعيد تسمية هذا الإطار.
lineno
يعيد رقم سطر هذا الإطار.
path
يُعيد اسم ملف هذا الإطار.
to_s
يُعيد سلسلة نصية تمثل هذا الإطار على نمط التابع Kernel.caller
.