Какой смысл в унарном операторе плюс в Ruby? - PullRequest
9 голосов
/ 15 апреля 2011

Помимо создания хорошей симметрии с унарным минусом, почему унарный оператор плюс определен в классе Numeric? Есть ли в этом какая-то практическая ценность, кроме как вызвать путаницу, позволяющую писать такие вещи, как ++i (что, в отличие от большинства нерубиистов, не увеличивает i).

Я могу вспомнить сценарий, в котором определение унарного плюса для пользовательского класса может быть полезным (скажем, если вы создаете какой-то сексуальный DSL), поэтому возможность определить его - это нормально, но почему он уже определен в числах Ruby?

Ответы [ 3 ]

9 голосов
/ 15 апреля 2011

Возможно, это просто вопрос согласованности, как с другими языками программирования, так и для отражения унарного минуса.

Найдена поддержка для этого в Языке программирования Ruby (написанный Юкихиро Мацумото, который разработал Ruby):

Допускается унарный плюс, но он не влияет на числовые операнды - он просто возвращает значение своего операнда. Он предусмотрен для симметрии с унарным минусом и, конечно, может быть переопределен.

1 голос
/ 15 апреля 2011

Одна из возможных причин, по которым я вижу, - явно указать, что число положительное (хотя оно по умолчанию положительное).

ruby-1.9.2-p136 :051 > +3
 => 3 
ruby-1.9.2-p136 :052 > 3
 => 3 
0 голосов
/ 22 октября 2018

Как указано , упомянутое в документации , если строка заморожена, унарный оператор плюс вернет изменчивую строку.

...