Tag: 注射

查找n是否作为给定数组中任意2个数字的总和存在

我试图找出n是否作为传递数组中任意两个数字的总和存在,如果是这样返回true否则我的代码的问题是inject不是我想要的迭代。 我究竟做错了什么? def sum_to_n?(array,n) array.each do |i| array.inject(i) do |memo,var| if memo + var == n return true else return false end end end end puts sum_to_n?([1,2,3,4,5],9)

理解在Ruby中使用lambda注入的行为

我经常将预配置的lambdas插入可枚举的方法,如’map’,’select’等,但’inject’的行为似乎有所不同。 例如 mult4 = lambda {|item| item * 4 } 然后 (5..10).map &mult4 给我 [20, 24, 28, 32, 36, 40] 但是,如果我使用2参数lambda与这样的注入一起使用, multL = lambda {|product, n| product * n } 我希望能说 (5..10).inject(2) &multL 因为’inject’有一个可选的单个参数作为初始值,但这给了我… irb(main):027:0> (5..10).inject(2) &multL LocalJumpError: no block given from (irb):27:in `inject’ from (irb):27 但是,如果我将’&multL’填充到第二个参数中以进行注入,那么它可以工作。 irb(main):028:0> (5..10).inject(2, &multL) => 302400 我的问题是“为什么这样做而不是之前的尝试?”

有人可以用Ruby来解释一个真实的,简单的语言用法吗?

我正在努力学习Ruby,并且遇到了注入。 我正处于理解它的尖端,但当我是那种需要真实世界的例子来学习某些东西的人。 我遇到的最常见的例子是人们使用注入来加总(1..10)范围的总和,我可能不在乎。 这是一个随意的例子。 在实际程序中我会用它做什么? 我正在学习,所以我可以继续使用Rails,但我不必拥有一个以网络为中心的例子。 我只需要一些有目的的东西,我可以把头包裹起来。 谢谢大家。