imHo RSSフィード

2007-09-20

インクリメント演算子

Ruby にはインクリメント、デクリメント演算子がない。けど

++a
--b

と前置で書いてもエラーにならない。単項演算子が2回とパースされてるよう。

逆に後置で

a++
b--

はエラーになる。a+(+x) の x がないエラーになってる模様。

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/5323

| 3) 記号的な記法

|

| これは単なる私の趣味ですが, 単項インクリメントとかがたまに欲しく

| なります. i += 1 でいいわけですが. i++ と書いて怒られる (^^;

すんません.この件は以前から指摘されているのですが(演算子はC

に似ているのに++と--は対応する演算子が無い),++の動作が本質

的に「変数を操作する」ものであるため,変数がオブジェクトでな

いRubyでは導入できないでいます.++や--の「オブジェクト指向

意味」がRubyの他の部分と整合性を保ったまま定義できれば採用し

たいのですが….

Haskell みたく、(Int::succ) 的なものを用意して、インクリメント演算子はそれの呼び出しってことにすれば。単項演算子があるのにできないことはないと思うんだけど。それができないまでも、++, --はトークンにパースして、エラーにしてくれれば。

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。