所以我有一个像这样的Ruby方法:
def something(variable, &block)
....
end
我想这样称呼它:
something 'hello' { do_it }
除非对我不起作用,否则我会收到语法错误。如果我这样做,它可以工作:
something 'hello' do
do_it
end
除此之外,我有点想念它在一条线上的漂亮外观。
我可以看到为什么会发生这种情况,因为它看起来像是作为第二个变量传递的哈希,但变量之间没有逗号......但我认为必须有办法处理这个问题我失踪了。有吗?
答案 0 :(得分:34)
你需要为你的论点加上括号:
something('hello') { do_it }
这应该有效。
答案 1 :(得分:1)
如果你想要“def something”接受一个块,你需要向该块产生数据。例如:
#to uppercase string
def something(my_input)
yield my_input.upcase
end
# => "HELLO WORLD"
something("hello world") { |i| puts i}
答案 2 :(得分:0)
>> def something(arg1 , &block)
>> yield block
>> end
=> nil
>> def do_it
>> puts "Doing it!"
>> end
=> nil
>> something('hello') { do_it }
"Doing it!"
=> nil