本文簡要介紹ruby語言中 Thread::Backtrace::Location類
的用法。
堆棧幀的對象表示,由 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>'
相關用法
- Ruby Location.lineno用法及代碼示例
- Ruby Location.label用法及代碼示例
- Ruby Location.path用法及代碼示例
- Ruby LocalJumpError類用法及代碼示例
- Ruby LoadError類用法及代碼示例
- Ruby Logger類用法及代碼示例
- Ruby Logger.info用法及代碼示例
- Ruby Lazy.collect用法及代碼示例
- Ruby Lazy.collect_concat用法及代碼示例
- Ruby Lazy.flat_map用法及代碼示例
- Ruby List.append用法及代碼示例
- Ruby Lazy._enumerable_map用法及代碼示例
- Ruby Lazy.enum_for用法及代碼示例
- Ruby List.prepend用法及代碼示例
- Ruby LDAP.build用法及代碼示例
- Ruby Lazy._enumerable_flat_map用法及代碼示例
- Ruby Lazy.new用法及代碼示例
- Ruby Lazy._enumerable_filter_map用法及代碼示例
- Ruby Lazy._enumerable_collect用法及代碼示例
- Ruby Lazy.filter_map用法及代碼示例
- Ruby Lazy.to_enum用法及代碼示例
- Ruby Lazy._enumerable_collect_concat用法及代碼示例
- Ruby Lazy.map用法及代碼示例
- Ruby LDAP.new用法及代碼示例
- Ruby Lazy類用法及代碼示例
注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 Location類。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。