注入:NoMethodError:未定义的方法“ <<”::Symbol

user2012677

如何正确使用注入并消除错误?

我正在尝试创建一个数组。这是一个例子,我知道有更好的解决方案来获得最终结果,但是我试图更好地理解注入。

a = [:one,:two,:three]  # => [:one, :two, :three]

a.inject do |sum = [], v|  # => [:one, :two, :three]
  sum << v   if v != :one  # ~> NoMethodError: undefined method `<<' for :one:Symbol\nDid you mean?  <
end

目的是添加称为的数组的项,该数组sum以一个空数组开始,如果该项不等于:one,则添加项。

史蒂夫·图钦

您可以将sum的初始值作为参数传递。在这种情况下,初始值必须为空数组。同样,您需要确保总和是块中最后评估的行。

您需要传递初始值,因为如果不这样做,则集合的第一个值:one会自动分配给sum,因此sum <<会失败(符号不支持<<

总而言之...如果没有默认值,:one则求和,并且该块仅[:two, :three]使用初始值求值,该块将对集合的每个成员求值。

a = [:one,:two,:three]  # => [:one, :two, :three]

a.inject([]) do |sum, v|  
  sum << v   if v != :one
  sum 
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

NoMethodError::LogoUploader:Symbol载波的未定义方法“ validate_integrity”

NoMethodError:Capistrano 3中:roles:Symbol的未定义方法`map'

:name:Symbol的未定义方法`merge'

无法读取未定义的属性“ Symbol(Symbol.iterator)”

未定义的方法NoMethodError

NoMethodError未定义的方法

NoMethodError:未定义的方法

Chartkick和jsapi.js的:name:Symbol的未定义方法`each_pair'

:name:Symbol Rails 4.1.x collection_select的未定义方法“合并”

Puma 发现了这个错误:未定义方法 `call' for :debug:Symbol

验证错误显示正在为:category:Symbol生成此'未定义的方法'full_message'

babel obj symbol.iterator未定义

未处理的拒绝(TypeError):无法读取未定义的属性'Symbol(Symbol.iterator)'

Angular2:TypeError:无法读取未定义的属性“ Symbol(Symbol.iterator)”

Firebase函数故障:(未定义)对象不可迭代(无法读取属性Symbol(Symbol.iterator))

TypeError:无法读取未定义的属性'Symbol(Symbol.iterator)'

NoMethodError:未定义的方法`with_deleted`

rails NoMethodError:未定义的方法“酒店”

NoMethodError:HTTParty的未定义方法“提交”

NoMethodError(未定义的方法“已锁定”

Sidekiq:NoMethodError:未定义的方法“执行”

NoMethodError:未定义的方法“start_with?”

ruby - NoMethodError:未定义的方法“状态”

NoMethodError:未定义的方法“创建”

NoMethodError:main:Object的未定义方法“ on”

NoMethodError: []:Array 的未定义方法“错误”

NoMethodError:RSpec 的未定义方法“get”

NoMethodError:#<Model>的未定义方法“ pluck”

NoMethodError:nil:NilClass的未定义方法“ +”