В чем смысл унарного оператора plus в Ruby?
помимо создания хорошей симметрии с унарным минусом, почему унарный оператор plus определен на Numeric
класса? Есть ли в этом какая-то практическая ценность, за исключением того, что вызывает путаницу, позволяя писать такие вещи, как ++i
(которая, в отличие от большинства не-рубистов подумать, не прирастить i
).
Я могу подумать о сценарии, где определение унарного плюс на пользовательском классе может быть полезно (скажем, если вы создаете какой-то сексуальный DSL), поэтому возможность определить его в порядке, но почему это уже определено на рубиновых числах?
2 ответов
возможно, это просто вопрос согласованности, как с другими языками программирования, так и для отражения унарного минуса.
нашел поддержку для этого в Язык Программирования Ruby (написано Юкихиро Мацумото, разработавшим Ruby):
унарный плюс, но это никак не влияет на числовые операнды-он просто возвращает значение своего операнда. Он предусмотрен для симметрии с унарным минусом, и может, конечно, быть переопределяемый.
одна из возможных причин, которую я вижу, - это явно указать, что число положительно(хотя по умолчанию оно положительное).
ruby-1.9.2-p136 :051 > +3
=> 3
ruby-1.9.2-p136 :052 > 3
=> 3