【问题标题】:Store intermediate values into array with Ruby inject使用 Ruby 注入将中间值存储到数组中
【发布时间】:2016-09-14 17:29:24
【问题描述】:

我想将 ruby​​ 注入值存储到数组中,我找到了一个很好的示例(在网站 http://matthewcarriere.com/2008/06/23/using-select-reject-collect-inject-and-detect/),但它返回的是 Fixnum 而不是数组。

 [1,2,3,4].inject([]) {|acc,n| acc << n+n}

这将返回 262144。但是我希望数组为 [2, 4, 6, 8]。 任何帮助表示赞赏。

【问题讨论】:

    标签: inject


    【解决方案1】:

    它在我的机器上工作。

    您是否在新的 irb 会话中尝试过?

    您使用的是哪个版本的 ruby​​?

    $ ruby  --version
    ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
    
    $ irb --version
    irb 0.9.6(09/06/30)
    
    $ irb
    irb(main):001:0> [1,2,3,4].inject([]) {|acc,n| acc << n+n}
    => [2, 4, 6, 8]
    irb(main):002:0> 
    

    【讨论】:

    • 版本是一样的,除了我的是windows。基本上我想要这个数组,但它给了我错误:irb(main):001:0> (0..30).inject([1,0]) { |(i,j)| i +' from (irb):1:in block in irb_binding' from (irb):1:in each' from (irb):1:in inject' from (irb): 1 来自 C:/Ruby23-x64/bin/irb.cmd:19:in `
      '
    • 您正在尝试将整数与数组相加。 i + j => 数组 + Fixnum。也许你正在尝试这样做。 (0..30).inject([1,0]) { |i,j|我
    • 哦,你是对的,谢谢我知道为什么我会出错。但我想添加以前的数组数量(即我想得到斐波那契数列直到第 30 个位置)。如果您能指导,我将不胜感激。
    • (0..30).inject([0,1]) { |i| i
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多