在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