2012-04-01 38 views
0

你好,我正在尝试学习红宝石块。但我有一个麻烦来克服这种结构:将参数传递给显式红宝石块

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) 

我不明白为什么这个代码的结果是“负载#{X}”,而不是“负载5” 任何帮助表示赞赏。

回答

5

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

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

+0

你是对的,非常感谢。 – bodo 2012-04-01 10:20:10