Рубиновый декремент до предела - PullRequest
1 голос
/ 02 марта 2011

Мне бы хотелось иметь набор методов, которые могут увеличивать / уменьшать значение, но с нижним пределом, равным нулю.

В основном:

def decrement
  @value -= 1
end

Кроме того, я не хочу, чтобы он опустился ниже нуля.

Какой лучший "рубиновый способ" сделать это?

Ответы [ 4 ]

6 голосов
/ 02 марта 2011
def decrement
  @value -= 1 unless @value.zero?
end

Или, если вы хотите сгенерировать исключение:

def decrement
  raise RangeError, "can't decrement below zero" if @value.zero?
  @value -= 1
end
4 голосов
/ 02 марта 2011
def decrement
  @value = [@value-1, 0].max
end
1 голос
/ 02 марта 2011
def decrement
  @value -= 1 unless @value - 1 < 0
end
1 голос
/ 02 марта 2011
def decrement(value)
  value -= 1 if value - 1 >= 0
end
...