代码之家  ›  专栏  ›  技术社区  ›  randombits

Ruby:这两个数组有什么区别?

  •  1
  • randombits  · 技术社区  · 15 年前

    我被这里的语法搞糊涂了,但这两者之间有什么区别呢

    foo[x][y] 
    

    foo[x, y]
    
    3 回复  |  直到 15 年前
        1
  •  8
  •   Mark Byers    15 年前
    • foo[x, n] 返回n个元素 foo 从第x个元素开始。
    • foo[x][y] 并返回其yth元素。

    下面是一个示例:

    > foo = [[0,1,2],[3,4,5],[6,7,8],[9,10,11],[12,13,14]]
    => [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11], [12, 13, 14]]
    > foo[1,2]
    => [[3, 4, 5], [6, 7, 8]]
    > foo[1][2]
    => 5
    
        2
  •  3
  •   Mark Thomas    15 年前

    foo[x] 语法糖是用来 foo.slice(x) foo[x,y] 相当于 foo.slice(x,y) . 如果你看 the rubydocs

    array.slice(index)

    array.slice(start,length) 使用两个参数返回从 start 还有 length 元素。

    foo[x][y] 作为 foo.slice(x).slice(y) foo 数组,这与 食物切片(x,y) 它从foo本身提取一个子数组的值。

        3
  •  1
  •   mikej heading_to_tahiti    15 年前

    irb(main):035:0> l = [[1,2,3],[4,5,6],[7,8,9]]
    => [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    irb(main):036:0> l[0]
    => [1, 2, 3]
    irb(main):037:0> l[0][0]
    => 1
    

    第二个返回从x位置开始的数组中的y元素。

    irb(main):038:0> a = [1,2,3,4,5,6,7,8]
    => [1, 2, 3, 4, 5, 6, 7, 8]
    irb(main):039:0> a[2,3]
    => [3, 4, 5]