在ruby中,什么时候块不是块?
in ruby, when is a block not a block?
开个玩笑,我有一个奇怪的情况,我有一些代码:
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)
)。
认为它不相关,remotes 是一个包含 key 和 Procs 的散列,而 form 只是一个特定结构的散列,它使用 ident 定位正确的插入点将 proc 的结果插入其中
Ruby 认为您正在将块传递给 pp
方法,它只是忽略它。尝试:
res = remotes(forms,remotes) do |ident|
case(ident)
when :get_assets
'@Userobject'
end
end
pp res
开个玩笑,我有一个奇怪的情况,我有一些代码:
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)
)。
认为它不相关,remotes 是一个包含 key 和 Procs 的散列,而 form 只是一个特定结构的散列,它使用 ident 定位正确的插入点将 proc 的结果插入其中
Ruby 认为您正在将块传递给 pp
方法,它只是忽略它。尝试:
res = remotes(forms,remotes) do |ident|
case(ident)
when :get_assets
'@Userobject'
end
end
pp res