【问题标题】:Ruby koan - about arrays - test_accessing_array_elements array[5,0] [duplicate]Ruby koan - 关于数组 - test_accessing_array_elements 数组 [5,0] [重复]
【发布时间】:2010-07-21 03:10:04
【问题描述】:

可能重复:
Why does array.slice behave differently for (length, n)

在 Ruby koan "about_arrays.rb", test_accessing_array_elements 中有两个相似的开始/长度切片语句访问数组的各个部分。参考下面的摘录。两者都应该“超出范围”,但一个返回一个空数组,另一个返回 nil。这与文档 ruby doc 中的可能结果相匹配。为什么会这样?

irb(main):221:0> array = [:peanut, :butter, :and, :jelly]
=> [:peanut, :butter, :and, :jelly]
irb(main):222:0> array[4,0]
=> []
irb(main):223:0> array[5,0]
=> nil
irb(main):224:0>
irb(main):224:0> array[4]
=> nil
irb(main):225:0> array[5]
=> nil
irb(main):226:0>

【问题讨论】:

  • 我本周在运行 Ruby koans 时遇到了这个问题,最后在 irc 上的#ruby 中询问了这个问题。房间的共识是“错误特征”或“设计错误”,这是值得的。 (这种行为记录在 Array#slice 的文档中,尽管“特殊情况”的描述并不令人鼓舞。)

标签: ruby


【解决方案1】:

我认为它是一些数组方法,指的是元素之间的间隙,而不是元素本身,即 0 是第一个元素之前的空间,1 是第一个和第二个元素之间的空间。以这种方式考虑,该操作更有意义,因为 4 是第四个元素之后的间隙,它仍在数组内,因此该位置的零个元素是一个空数组。

您可以以相同的方式考虑插入方法(尽管文档明确说明另有说明)。

但是,这可能是一种心理技巧,而不是一种解释——不过,也许它会对某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 2014-10-13
    • 2013-10-05
    • 1970-01-01
    相关资源
    最近更新 更多