给定数组
x = [2, 3, 4, 5, 6, 7]
我希望在某个点/索引处将其切成两半,并创建两个这样的切割子阵列,但忽略索引。 例如:
x = [2, 3, 4, 6, 70, 10]
left, right = x.slice_at_index(2)
left = [2, 3]
right = [6, 70, 10]
我已尝试使用each_index
,切片,块,但不能忽略索引元素。
答案 0 :(得分:3)
left, right = x.take(index), x.drop(index.next)
答案 1 :(得分:1)
left = x[0..1]
right = x[3..-1]
答案 2 :(得分:1)
我认为,像array这样的文档可能会在下次帮助您。
所以, UPD 解决方案适合您:
x = [2, 3, 4, 6, 70, 10]
left, right = x.shift(2), x.drop(2.pred)
> left
=> [2, 3]
> right
=> [6, 70, 10]
答案 3 :(得分:0)
你可以写一个方法:
def slice_at_index(array, index)
left = array[0...index] # 3 dots vs 2
right = array[(index + 1)..-1]
return [left, right]
end
但是,我通常会避免多次分配,例如left, right = slice_at_index(x, 2)
作为样式规则。
答案 4 :(得分:0)