将参数传递给显式ruby块

bod*_*odo 0 ruby parameters block

您好我正在尝试学习红宝石块.但我很难克服这种结构:

class SomeApp

  attr_accessor :load_listener

  def on_load(&block)
    @load_listener = block
  end

  def load(x)
    @load_listener.call(x) if @load_listener
  end

end

app = SomeApp.new
app.on_load { |x| puts 'on load #{x}'} 
app.load(5)
Run Code Online (Sandbox Code Playgroud)

我不明白为什么这个代码的结果是'on load#{x}',而不是'on load 5' 任何帮助都是值得赞赏的.

Art*_*ber 6

您使用单引号(')而不是双引号(").字符串插值(#{...})仅适用于双引号.

更改puts 'on load #{x}'puts "on load #{x}".