2011-04-15 18 views
8

Aparte de hacer una buena simetría con menos unitario, ¿por qué es más unario operador definido en Numeric clase? ¿Hay algún valor práctico en el mismo, a excepción de causar confusión que permite escribir las cosas como ++i (que, a diferencia de la mayoría de los no Rubyistas podría pensar, no incrementa i).¿Cuál es el punto del operador unario plus en Ruby?

Puedo pensar en un escenario donde la definición de unario plus en una clase personalizada podría ser útil (digamos si estás creando un DSL atractivo), así que poder definirlo está bien, pero ¿por qué ya está definido en los números de Ruby? ?

Respuesta

7

Quizás es solo una cuestión de consistencia, tanto con otros lenguajes de programación, como para reflejar el menos unario.

apoyo encontrado para esto en The Ruby Programming Language (escrito por Yukihiro Matsumoto, que diseñó Rubí):

se permitió a los más unario, pero no tiene ningún efecto sobre operandos numéricos — simplemente devuelve el valor de su operando . Está provisto para simetría con menos unario, y puede, por supuesto, ser redefinido.

1

Una posible razón que veo es declarar explícitamente que un número es positivo (a pesar de que por defecto es positivo).

ruby-1.9.2-p136 :051 > +3 
=> 3 
ruby-1.9.2-p136 :052 > 3 
=> 3 
Cuestiones relacionadas