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

Ale*_*der 0 ruby methods reverse arguments

我在Ruby中有两种方法:

def reverse(first,second)
   @items[first..second]=@items[first..second].reverse 
end
Run Code Online (Sandbox Code Playgroud)

和:

def reverse
  @items.reverse! 
end
Run Code Online (Sandbox Code Playgroud)

我可以将这些功能组合成一个功能并使用一个if first.nil? && second.nil?条件,或者最好保持它的状态吗?

Ere*_*bih 11

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

def reverse(first = nil, second = nil)
  if first && second
    @items[first..second]=@items[first..second].reverse
  else
    @items.reverse! 
  end
end
Run Code Online (Sandbox Code Playgroud)

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

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