Мне нужна функция, которая возвращает/печатает знак на целое число. До сих пор я придумал это:
def extract_sign(integer)
integer >= 0 ? '+' : '-'
end
Есть ли встроенный Ruby-метод, который делает это?
Ответ 1
Вот простой способ сделать это:
x = -3
"++-"[x <=> 0] # => "-"
x = 0
"++-"[x <=> 0] # => "+"
x = 3
"++-"[x <=> 0] # => "+"
или
x = -3
"±+-"[x <=> 0] # => "-"
x = 0
"±+-"[x <=> 0] # => "±"
x = 3
"±+-"[x <=> 0] # => "+"
Ответ 2
Я думаю, что это бессмыслица не иметь метода, который просто дает -1 или +1. Даже BASIC имеет такую функцию SGN (n). Почему мы должны иметь дело со Струнами, когда они номера, с которыми мы хотим работать. Но это просто MHO.
def sgn(n)
n <=> 0
end.
Ответ 3
Вы можете использовать Kernel#sprintf для форматирования чисел: