为什么 "array.length" returns array object 放在 array[] 里面?
Why "array.length" returns array object when we put it inside array[]?
rand(array.length) # returns random index <br>
array[rand(array.length)] # returns random array object
我无法理解背后的逻辑。我假设第二个示例也是 returns 随机索引,然后将其存储在数组中。
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.sample
是怎么做的。
ruby代码
kitty = [100,102,104,105]
kitty.sample #to get random array elements
您描述的行为符合预期:
array[index]
是对所提供数组中对象的引用,其中 index 是一个小于 array.length
的数值,因为 rand(array.length)
returns 一个小于 array.length
的随机数值,您正在有效地访问给定数组的随机索引处的元素。
虽然可以使用 array.sample
获得相同的行为,但推荐使用。
有关 Ruby 数组的更多信息,请参阅文档:http://ruby-doc.org/core-2.2.0/Array.html
虽然 array.sample
是从数组中获取随机元素的最佳方式,但我相信 OP 正在询问方法链是如何工作的。
当您调用时:rand(array.length)
返回一个数字,正确。但是在以下情况下:
array[ rand(array.length) ]
返回一个数字,然后立即将其送入数组调用,这会为您提供该数组索引处的对象。
rand(array.length) # returns random index <br>
array[rand(array.length)] # returns random array object
我无法理解背后的逻辑。我假设第二个示例也是 returns 随机索引,然后将其存储在数组中。
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.sample
是怎么做的。
ruby代码
kitty = [100,102,104,105]
kitty.sample #to get random array elements
您描述的行为符合预期:
array[index]
是对所提供数组中对象的引用,其中 index 是一个小于 array.length
的数值,因为 rand(array.length)
returns 一个小于 array.length
的随机数值,您正在有效地访问给定数组的随机索引处的元素。
虽然可以使用 array.sample
获得相同的行为,但推荐使用。
有关 Ruby 数组的更多信息,请参阅文档:http://ruby-doc.org/core-2.2.0/Array.html
虽然 array.sample
是从数组中获取随机元素的最佳方式,但我相信 OP 正在询问方法链是如何工作的。
当您调用时:rand(array.length)
返回一个数字,正确。但是在以下情况下:
array[ rand(array.length) ]
返回一个数字,然后立即将其送入数组调用,这会为您提供该数组索引处的对象。