類別 IRB::Frame

常數

CALL_STACK_OFFSET

預設的堆疊格數偏移量

INIT_STACK_TIMES

預設的堆疊格數

公開類別方法

bottom(n = 0) 按一下以切換來源

Frame#bottom 的方便方法

# File lib/irb/frame.rb, line 61
def Frame.bottom(n = 0)
  @backtrace.bottom(n)
end
new() 按一下以切換來源

建立新的堆疊格

# File lib/irb/frame.rb, line 26
def initialize
  @frames = [TOPLEVEL_BINDING] * INIT_STACK_TIMES
end
sender() 按一下以切換來源

傳回從最後初始化的格中呼叫者的繫結內容

# File lib/irb/frame.rb, line 71
def Frame.sender
  eval "self", @backtrace.top
end
top(n = 0) 按一下以切換來源

Frame#top 的方便方法

# File lib/irb/frame.rb, line 66
def Frame.top(n = 0)
  @backtrace.top(n)
end

公開執行個體方法

bottom(n = 0) 按一下以切換來源

傳回從第一個初始化的格開始,呼叫堆疊中 n 個格。

如果給定的堆疊範圍中沒有格,則會引發 FrameOverflow

# File lib/irb/frame.rb, line 54
def bottom(n = 0)
  bind = @frames[n]
  fail FrameOverflow unless bind
  bind
end
top(n = 0) 按一下以切換來源

傳回從最後一個初始化的格開始,呼叫堆疊中 n 個格。

如果給定的堆疊範圍中沒有格,則會引發 FrameUnderflow

# File lib/irb/frame.rb, line 44
def top(n = 0)
  bind = @frames[-(n + CALL_STACK_OFFSET)]
  fail FrameUnderflow unless bind
  bind
end
trace_func(event, file, line, id, binding) 按一下以切換來源

Kernel#set_trace_func 用於在呼叫堆疊中註冊每個事件

# File lib/irb/frame.rb, line 31
def trace_func(event, file, line, id, binding)
  case event
  when 'call', 'class'
    @frames.push binding
  when 'return', 'end'
    @frames.pop
  end
end