【问题标题】:Why "array.length" returns array object when we put it inside array[]?为什么当我们将“array.length”放入array []时返回数组对象?
【发布时间】:2015-05-08 22:23:44
【问题描述】:
rand(array.length)        # returns random index <br>
array[rand(array.length)] # returns random array object

我无法理解背后的逻辑。我假设第二个示例也返回随机索引,然后将其存储在数组中。

kitty = [100,102,104,105]

rand(kitty.length)        # returns index, for example 3 ( or 0,1,2 )
array[rand(kitty.length)] # returns random array object, for example 104 ( or 100,102,105)

【问题讨论】:

  • 你在问为什么array[some_number]会返回数组中那个索引处的项目吗?
  • 当您执行array[3](或0、1、2)时会发生什么?这与您的第二个示例相同。 rand(kitty.length) 返回一个整数,然后用于索引array
  • 好的,我明白了,托尼。 rand(kitty.length) = index 和 array[index] 返回数组对象。如此明显,我没有注意到。

标签: arrays ruby random maxlength


【解决方案1】:

虽然array.sample 是从数组中获取随机元素的最佳方式,但我相信 OP 是在询问方法链接的工作原理。

当您调用时:rand(array.length) 返回一个数字,为​​真。但是在以下情况下:

array[ rand(array.length) ]

返回一个数字,然后立即将其输入到数组调用中,从而为您提供该数组索引处的对象。

【讨论】:

    【解决方案2】:

    这是教程吗?如果是这样,请不要相信它。 array.sample 是怎么做的。

    【讨论】:

    • 可能是一个很好的建议,但我不确定它是否真的回答了这个问题。它似乎更适合作为评论或脚注。
    【解决方案3】:

    红宝石代码

    kitty = [100,102,104,105]
    kitty.sample                #to get random array elements
    

    【讨论】:

    • 如果这是您要找的,我不知道?
    【解决方案4】:

    您所描述的行为是预期的:

    array[index] 是对所提供数组中的对象的引用,其中 index 是小于 array.length 的数值,因为 rand(array.length) 返回小于 array.length 的随机数值您正在有效地访问给定数组的随机索引处的元素。

    虽然可以使用array.sample 获得相同的行为,但建议使用。

    有关 Ruby 数组的更多信息,请参阅文档:http://ruby-doc.org/core-2.2.0/Array.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-07
      • 2018-10-15
      • 2020-11-15
      • 2012-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      相关资源
      最近更新 更多