有没有办法在一行中将此[1, 2, 3, 4, 5, 6, 7, 8, 9]
转换为此[4, 5, 6, 7, 8, 9]
?
现在我计划将它分配给变量,获取长度,并使用shift
函数。没关系,只是想知道是否有更多的Rubyish方式来做它
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
a.shift(a.length/3)
答案 0 :(得分:1)
不使用Array#slice
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
a[(a.length/3)..-1]
#=> [4, 5, 6, 7, 8, 9]
一个变异的选项,是一个单行
[1, 2, 3, 4, 5, 6, 7, 8, 9].tap { |a| a.shift(a.length/3) }
#=> [4, 5, 6, 7, 8, 9]
答案 1 :(得分:0)
如果您申请代码,您将获得:
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
a.shift(a.length/3) # => [1,2,3]
但是在操作数组a
将包含您需要的内容之后:
a # => [4, 5, 6, 7, 8, 9]
因此,例如明显的variat要转移:
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
(a.length/3).times {|a| a.shift }
a # => [4, 5, 6, 7, 8, 9]
当然,您可以获得所需的数组值,因为它由bjhaid
表示。