我已经尝试过使用 send
方法,但它最终几乎不可读,并且与以前的代码一样长。Ruby 中是否有一种简单的方法来重构这样的代码?
def insert_before(data)
node = Node.new(data)
node.next = self
node.prev = @prev
@prev.next = node unless @prev.nil?
@prev = node
end
def insert_after(data)
node = Node.new(data)
node.prev = self
node.next = @next
@next.prev = node unless @next.nil?
@next = node
end
我认为您拥有的很好,但是您可能希望将两种方法的共同点放在单独的方法中。
def insert_before(data)
node = insert_node(data, self, @prev)
@prev.next = node unless @prev.nil?
@prev = node
end
def insert_after(data)
node = insert_node(data, @next, self)
@next.prev = node unless @next.nil?
@next = node
end
def insert_node(data, from, to)
node = Node.new(data)
node.next = to
node.prev = from
node
end