- 1 名前:デフォルトの名無しさん [2008/01/16(水) 17:41:27 ]
- プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
関連スレやURLは>>2-7あたりを見てください。Ruby on Railsの質問はWebProg板のRailsスレで。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・ぐぐる ・マニュアルで探す www.ruby-lang.org/ja/man/ ・FAQを読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(なるべくそのままで) ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる)) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって初心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
- 659 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:31:39 ]
- 質問というよりも言語仕様の問題に近いのかもしれませんが、
どうしてRubyにはインクリメントならびにデクリメント演算子がないのでしょうか? 実質 x += 1 で何も問題はないのですが、 この表記は個人的になんか気に入らないので、納得のいく理由が欲しいのです。 調べたりしてもなぜないのかまで踏み込んでいるところが見つからなくて……よろしくお願いします。 前置や後置でややこしいからかな……などと思いましたが、 それならば後置限定で採用するなりすればいいじゃないかと思うのは浅知恵でしょうか? ならびに x.next x.succ で後置インクリメントじみた挙動が実現できるのは知っていますが、 インクリメントの意味合いでこのメソッドを使用するのは感心できる行為なんでしょうか? またその場合、インクリメントはメソッド、デクリメントは演算子とアシンメトリになってしまうのですが、 なんかもう全部ひっくるめて、ここらへんはどう解釈すればいいんでしょうか?
- 660 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:41:44 ]
- >>659
現行のRubyにインクリメント演算子が無いのは言語作成者のポリシー。 10年も前のMLでの発言だが、基本的には変わってないはずだ。 ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/5323 > すんません.この件は以前から指摘されているのですが(演算子はC > に似ているのに++と--は対応する演算子が無い),++の動作が本質 > 的に「変数を操作する」ものであるため,変数がオブジェクトでな > いRubyでは導入できないでいます.++や--の「オブジェクト指向的 > 意味」がRubyの他の部分と整合性を保ったまま定義できれば採用し > たいのですが…. うまい実装の仕方があれば要望として取り入れると思うぞ。
- 661 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:47:56 ]
- あと
> x.next x.succ で後置インクリメントじみた挙動が実現できる できないと思うぞ i = i.succ と書くことは i += 1 と書くのと見栄え的にも手間的にもたいして変わらないんじゃないかと
- 662 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:49:15 ]
- Cだとx++;で済んで簡潔なのかもしれんが、
例えばループ書くのに使うときとかは、ブロック使ってメソッドに抽象化して使う ようにして、元が多少ダサくなるのは見逃してくれ。
- 663 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:57:55 ]
- なんでインクリメント作れないのかは
「整数オブジェクトを破壊的に変更できないから」というのもあると思う
- 664 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 02:11:45 ]
- 俺もRuby使って最初に躓いたのが、++と--が使えないことだったw
Matzらしくもない。こんなんとっとと取り込んじまえばイイヤン。
- 665 名前:659 mailto:sage [2008/02/08(金) 02:15:06 ]
- >>660-663
まとめてですみません。素早いお返事ありがとうございます。 確かにそう考えると合点がつきますね。 自分で考えても全然納得できなかったのですが、ようやくすっきりしました。 ありがとうございます。 >>661 できませんね…… succをリファレンスで調べたときに「インクリメントの代替はあるじゃん!」と勘違いして、 そのままずっと勘違いし続けてたみたいです。重ね重ねありがとうございます。
- 666 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 02:18:50 ]
- >>660の「変数がオブジェクトでない」ってどういう意味?
- 667 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 02:20:24 ]
- >>665
え〜納得しちゃうの?w ごねようぜ・・・w
- 668 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 02:35:19 ]
- >>667
「しんたっくすしゅがーとかでさいようしましょうよ〜」とかでいいですか?w いや本当はちょっとごねたいんですけど、なにぶん『初心者スレッド』で質問している程度なんで 納得した先にできることがないっす。 += とか本当は嫌いなんだけどなあ……みたいな感じで。
- 669 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 02:41:47 ]
- >>668
かわいくゴネたら、俺がパッチ作って匿名でRubyメーリングリストに なげるっていう条件でどう?w かわいくなかったら、作らないw
- 670 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 03:40:39 ]
- >>666
単なる名札。
|

|