當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Ruby Location類用法及代碼示例

本文簡要介紹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-lang.org大神的英文原創作品 Location類。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。