假设我有这个数组
array = ['a', 'b', 'c', 'd']
Run Code Online (Sandbox Code Playgroud)
什么是定位元素的好方法(例如'b')并使用行中的下一个元素(在本例中为'c')切换它,结果变为:
=> ['a', 'c', 'b', 'd']
Run Code Online (Sandbox Code Playgroud)
array[1], array[2] = array[2], array[1]
array #=> ["a", "c", "b", "d"]
Run Code Online (Sandbox Code Playgroud)
要么
array[1, 2] = array.values_at(2, 1)
array #=> ["a", "c", "b", "d"]
Run Code Online (Sandbox Code Playgroud)
这样做没有功能.您可以像这样交换值:
array = %w[a b c d]
array[1..2] = array[1..2].reverse
array #=> ["a", "c", "b", "d"]
Run Code Online (Sandbox Code Playgroud)
您可以向核心数组类添加一些辅助方法.
class Array
def move_up(index)
self[index, 2] = self[index, 2].reverse
self
end
def move_down(index)
move_up(index - 1)
end
end
Run Code Online (Sandbox Code Playgroud)
注意:请记住,此解决方案会改变原始数组.您还可以选择创建新阵列的版本.对于这个版本,您可以调用#dup(result = dup)result而不是使用self.
参考文献: