【问题标题】:Why isn't [1..5] == [1,2,3,4,5]?为什么不是 [1..5] == [1,2,3,4,5]?
【发布时间】:2012-09-10 01:53:51
【问题描述】:

为什么不是[1..5] == [1,2,3,4,5]

为什么不是[1..5].to_a == [1,2,3,4,5]

如何从[1..5] 转换为[1,2,3,4,5]

【问题讨论】:

  • [1..5][(1..5)] 相同(一个包含一个 Range 对象的数组)。如果不理解,inspect 不是很有帮助,但是在 REPL 上尝试[1..5][0] 应该可以解决问题。
  • [*1..5]扩大范围

标签: ruby arrays comparison compare range


【解决方案1】:

[1..5] 是一个只有一个元素的数组,范围对象1..5

[1..5].to_a 仍然是[1..5]

(1..5).to_a[1,2,3,4,5]

【讨论】:

    【解决方案2】:

    [1..5] 是一个包含一个元素的数组 - 一个范围对象,所有迭代它的尝试都将失败。数组中可以包含多种对象。在上面的示例中,我将范围视为一个范围,并直接从中创建任何数组。

    1.9.3-p125 :008 > (1..5).to_a  # Note regular parens.
     => [1, 2, 3, 4, 5] 
    1.9.3-p125 :009 > 
    

    要做到更多密切你所说的 - 从 [1..5] 开始 - 你可以这样做:

    1.9.3-p125 :013 > newarray = []
    
    1.9.3-p125 :014 > [1..5][0].each {|e| newarray << e}
     => 1..5 
    1.9.3-p125 :015 > newarray
     => [1, 2, 3, 4, 5] 
    1.9.3-p125 :016 > 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-15
      • 2014-11-22
      • 2019-05-29
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多