将参数传递给显式ruby块

时间:2012-04-01 09:54:33

标签: 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)

我不明白为什么这段代码的结果是#strong>'加载#{x}',而不是'加载5' 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:6)

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

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