【问题标题】:How to implement injection in Ruby?如何在 Ruby 中实现注入?
【发布时间】:2011-12-07 06:24:19
【问题描述】:

我需要能够使用这个调用:

h = x.inject({}) {|a, b| a[b.one] = b.two; a}

其中 x 是 Couple 对象的序列(它们只包含两个数字字段,一和二)。

我不确定如何在 Couple 中实现注入方法。

【问题讨论】:

  • 是的,'x' 是什么,还有你想要得到什么结果。带有结果的 2 或 3 个 x 值会有所帮助。
  • Using injection in Ruby? 的可能重复项

标签: ruby-on-rails ruby hash code-injection


【解决方案1】:

Couple 中定义一个#each 方法,然后在其中包含Enumerable

class Couple
  def each
    yield "a"
    yield "b"
  end

  include Enumerable
end

couple = Couple.new
couple.inject("") { |str, obj| str + obj }
# => "ab"

http://www.ruby-doc.org/core-1.9.3/Enumerable.html

【讨论】:

  • OOC - “每个”都有效吗?它会到达yield 'b' 吗?
  • 是的,你可以用不同的参数重复调用yield。
  • cool :) 出于某种原因,我认为它会在第一次收益时返回。
  • 我得到“未定义的方法注入”
  • 你包括了 Enumerable?可枚举提供注入。发布您的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-02
  • 2010-12-13
  • 2010-09-09
  • 2018-10-22
  • 1970-01-01
相关资源
最近更新 更多