2011-04-15 10 views
8

Eşsiz eksi ile birlikte güzel bir simetri oluşturmanın yanı sıra, tekil artı işleç neden Numeric sınıfında tanımlıdır? ++i (Rubyistlerin çoğunun aksine, i değerini arttırmadığını düşündüğümüz gibi) yazmalarına izin veren karışıklığa neden olmak dışında, bazı pratik değerler var.Ruby'de unary plus operatörünün amacı nedir?

Özel bir sınıftaki unary plus öğesinin tanımlanmasının yararlı olabileceği senaryoyu düşünebilirim (biraz seksi DSL oluşturuyorsanız), böylece bunu tanımlayabilmek iyi bir şeydir, ancak neden daha önceden Ruby numaralarında tanımlanmıştır? ?

cevap

7

Belki de diğer programlama dilleriyle birlikte tutarlılık meselesi olabilir ve tekli yansıtmayı yansıtır.

(Ruby tasarlanmış Yukihiro Matsumoto tarafından yazılmış) The Ruby Programming Language bunun için

Bulunan desteği:

tekli artı izin verilir, ancak bunun sadece kendi işlenen değerini verir sayısal işlenen — üzerinde hiçbir etkisi yoktur . Bu, simetri için unus eksi ile sağlanır ve elbette yeniden tanımlanabilir.

1

Gördüğüm olası bir neden, bir sayının pozitif olduğunu belirtmektir (varsayılan olarak pozitif olsa bile).

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