0

我在 Ruby 中有两种方法:

def reverse(first,second)
   @items[first..second]=@items[first..second].reverse 
end

和:

def reverse
  @items.reverse! 
end

我可以将这些组合成一个函数并使用一个if first.nil? && second.nil?条件,还是保持原样更好?

4

1 回答 1

11

第一个选项是使用默认值参数:

def reverse(first = nil, second = nil)
  if first && second
    @items[first..second]=@items[first..second].reverse
  else
    @items.reverse! 
  end
end

第二个选项是使用可变数量的参数:

def reverse(*args)
  if args.length == 2
    @items[args.first..args.last]=@items[args.first..args.last].reverse
  else
    @items.reverse! 
  end
end
于 2013-03-27T19:00:47.520 回答