- 1 名前:one [2009/05/16(土) 10:06:50 ]
- プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
【Ruby1.9.1 は従来版とは異なる部分も多く、書籍や解説やライブラリのサポートがまだありません】 【自力で解決できない壁で悩むことのない最新安定版の Ruby1.8.7 での学習をお勧めします】 ※1.8.7 は 1.8 系と 1.9 系の橋渡しをするためのリリースで、1.9 系 の便利新機能の一部が利用可能です 関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の 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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
- 73 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 20:31:20 ]
- 少しお聞きします。
メソッドチェーンの途中で nil があってもそれ以後予期に計らってくれる便利なハックや方法はありませんでしょうか? Delphi Prismのコロン演算子みたいなのです(例がマイナーすぎてスマソ・・) Colon Operator - Delphi Prism prismwiki.codegear.com/en/Colon_Operator
- 74 名前:73 mailto:sage [2009/05/19(火) 20:36:41 ]
- すいません。
>>73 ですが、既存のgemsとかのユーティリティ的なものがあればそれキボンという感じです。 わがままですいません…。 Activeなんたらとかにないのかなーと探しているのですが、見つからず
- 75 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 20:40:43 ]
- ((o = obj.hoge()) && (o = o.page()) && (o = o.moge()) && o.done()) || (puts "nil!!!")
・・・ごめん、忘れてw
- 76 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 20:59:01 ]
- 演算子として使いたいなら、言語機能として組み込まれないとどうにもならないように思える
あえて小手先の拡張でなんとかするなら・・・こんな感じか? obj.send_if_defined(:method1).send_if_defined(:method2)
- 77 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 21:08:54 ]
- >>73
眺めた程度ではリンク先の意味を理解できず申し訳ないのだけど 良きに計らうっていうのは具体的にどういう挙動を期待してる? ふとこんなのを思いついた class Nil; def method_missing; return nil; end
- 78 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 21:22:12 ]
- >>73
メソッドチェーンを使わないか、 期待した返り値にならない場合は例外出して抜けるメソッドだけをチェーンに使うか、 NoMethodError を rescue する
- 79 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 21:59:40 ]
- >>70
variable interpolation いや、 expression interpolationだな。
- 80 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 22:00:42 ]
- >>73
ActiveSupportのObject#tryおよびそれの同等品でどうか。 実態はsendだが、nilにだけはnilを返すように定義されている。
- 81 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 22:17:57 ]
- ま た R a i l s か
でもこれ確かに便利だな ttp://d.hatena.ne.jp/takihiro/20090204/1233745492
- 82 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 01:11:27 ]
- tryを1.9に取り込むって話はどうなったんだっけ?
- 83 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 01:18:26 ]
- >>82
catch〜tryのtry? それとも
- 84 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 01:39:50 ]
- haskellのめいびーがうんたらかんたら
- 85 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 02:18:00 ]
- >>82
名前がよければ採用してもいいという話になっていたと思うが、 誰かが思い出させないとそれきりかな? いちおうRedmineには入っていたハズ。
- 86 名前:73 mailto:sage [2009/05/20(水) 04:16:49 ]
- ActiveSupportのtryですね。確かにそんな感じですw
ちょっと使ってみようと思います。 > require 'activesupport'; [4649, "HageUnko", nil].map{|i| i.try(:+, i) } [9298, "HageUnkoHageUnko", nil] ありがとうございました。
|

|