[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 05/09 14:47 / Filesize : 107 KB / Number-of Response : 345
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 28



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]

ありがとうございました。






[ 続きを読む ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<107KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef