【发布时间】:2016-01-20 10:43:18
【问题描述】:
开个玩笑,我有一个奇怪的情况,我有一些代码:
def remotes(form,remotes)
personalised_form = form.dup
remotes.each do |ident,remote|
object = yield(ident)
result = remote.call(object)
insert_into_(personalised_form,ident,result)
end
personalised_form
end
我正在看看它是否像这样工作:
pp remotes(forms,remotes) do |ident|
case(ident)
when :get_assets
'@Userobject'
end
end
问题在于 ruby 似乎认为我没有将块传递给 remotes 函数。
为什么 ruby 坚持说我没有通过一个街区? (它特别给出了no block given (yield) (LocalJumpError))。
认为它不相关,remote 是一个包含键和 Procs 的散列,而 form 只是一个特定结构的散列,它使用 ident 将 proc 的结果插入其中以定位正确的插入点
【问题讨论】:
-
我建议在 SO Ruby 聊天室问这个问题。 IMO 有点模糊。
-
它计算你将块传递给 :pp,但不传递给 :remotes