参数很少或者为零的Ruby方法 - 怎么做?

时间:2013-03-27 18:55:46

标签: ruby methods arguments reverse

我在Ruby中有两种方法:

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

def reverse
  @items.reverse! 
end

我可以将这些功能合并到一个功能中并使用if first.nil? && second.nil?条件,还是最好保持原样?

1 个答案:

答案 0 :(得分:11)

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

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

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

def reverse(*args)
  if args.length == 2
    @items[args.first..args.last]=@items[args.first..args.last].reverse
  else
    @items.reverse! 
  end
end