我有一个方法,它可以打印出一个编号列表,并通过执行代码块来打印前缀。
arr = %w(a b c)
def print_lines(array)
array.each_with_index do |item, index|
prefix = yield index
puts "#{prefix} #{item}"
end
end
print_lines(arr) do |index|
"(#{index})"
end
这将产生以下输出:
(0) a
(1) b
(2) c
现在我想将
print_lines
方法包装在另一个方法中并调用它。def print_lines_wrapped(array)
puts 'print_lines_wrapped'
print_lines(array)
end
print_lines_wrapped(arr) do |index|
"(#{index})"
end
然而,这会导致出现一个"LocalJumpError"错误。
test_yield.rb:5:in `block in print_lines': no block given (yield) (LocalJumpError)
from test_yield.rb:4:in `each'
from test_yield.rb:4:in `each_with_index'
from test_yield.rb:4:in `print_lines'
from test_yield.rb:16:in `print_lines_wrapped'
from test_yield.rb:19:in `<main>'
我为什么会收到 LocalJumpError
的错误信息?
如何实现 print_lines_wrapped
方法,以便我可以像这样调用它:
print_lines_wrapped(arr) do |index|
"(#{index})"
end
并获取以下输出:
print_lines_wrapped
(0) a
(1) b
(2) c
?