1 名前:デフォルトの名無しさん [2010/03/04(木) 11:00:57 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 ★注意★ Ruby 1.9.1 は初心者にはまだ時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。 (理由:現時点では有名ライブラリやアプリが 1.9.1 に完全には対応していないためです) 1.8.7 でも 1.9 系に導入された新機能のいくつかが利用可能なため、1.8.7 を習得すれば将来スムーズに 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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
507 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 18:27:44 ] まだ間違ってるぞw
508 名前:496 mailto:sage [2010/03/15(月) 18:29:54 ] >>500 亀ですが、ありがとうございます これを気に文字コードにも意識を向けてみます
509 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 19:16:01 ] くっ Rubyist
510 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 19:51:11 ] includeは名前空間を使えるようにするものってことで、おk? C++@namespaceみたいな感じ
511 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 19:53:43 ] なんというか include はふつうに include だと思うのだが 既存言語の機能になぞらえないと理解し難いほど複雑難解な概念なのだろうか
512 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 20:00:50 ] includeの動作的には本当に>>444 だよね メソッドを探す順番の指定をする方法のひとつ
513 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 20:07:50 ] モジュールの存在理由のほうがムズカシイかもしれない
514 名前:510 mailto:sage [2010/03/15(月) 20:34:24 ] 読んでいた記事が間違えていたらしい 本当の使い方は、結局なんなんだろ? Mixinを実現するためにしか使わないのか
515 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 20:39:59 ] モジュールは、メソッドを用途ごとにまとめるためのしくみ メソッドがあるだけで、オブジェクトには依存しない機能のカタマリ 共通の機能をメソッドから追い出して別途メソッドを作るのと同じように、 共通の機能をクラスから追い出して別途モジュールを作る(でincludeする)というのも妥当
516 名前:デフォルトの名無しさん [2010/03/15(月) 20:45:11 ] Mixinのためと単なる名前空間のため両方に使われる
517 名前:510 mailto:sage [2010/03/15(月) 20:54:21 ] >>515-516 thx
518 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 22:17:04 ] プロパティも実装されていない糞言語
519 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 22:27:30 ] それで遊んでくれるのはPythonスレぐらいだぞ ここは意外とDRY
520 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 22:52:35 ] クラスインスタンス変数とは、そのクラスオブジェクトの特異クラスに属する インスタンス変数という理解で正しいですか?
521 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 23:00:11 ] ごめん、さっき違うスレで質問したけど理解してなかったorz 3 class Hoge 4 def self.set 5 @hoge = "dynamic" 6 $hoge = "static" 7 end 8 9 def self.out 10 puts @hoge 11 puts $hoge 12 end 13 end 14 15 Hoge.set 16 Hoge.out 実効結果 dynamic static $hogeと@hogeって何が違うのさ?
522 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 23:12:55 ] 理解してたらああは言わん クラスインスタンス変数はクラスオブジェクトが存在する限り存在する Hoge と書くことで定数 Hoge に Class クラスのインスタンスが Ruby によってセットされる (同名のクラス定義がなかった場合は定数とみなされ、事前に代入されてない未定義定数でエラー) で、Hoge.set を実行することでインスタンス変数 @hoge がインスタンスの中でふつうに設定される それが属するインスタンスとは Class クラスのインスタンスで、つまり定数 Hoge が指すものだ だから、無理矢理 Hoge の内容を nil にするとインスタンス変数 @hoge はスコープごと失なわれる irb> class Hoge; def self.set; @hoge='hoge'; end; end irb> Hoge.set irb> p Hoge.instance_variable_get(:@hoge) "hoge" irb> Hoge = nil (irb):4: warning: already initialized constant Hoge irb> p Hoge.instance_variable_get(:@hoge) nil
523 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 23:22:49 ] 特異メソッド上で書くからわかりにくい? class Hoge @hoge2="hoge2" end p Hoge.instance_variable_get(:@hoge2) は "hoge2" を返すよ
524 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 23:38:33 ] "プログラミング言語 Ruby" のp.326のなかほどに クオート文字列にマッチすることを意図した正規表現の例が以下のように 載ってるんだけど,文字集合内で番号指定後方参照ってできたっけ? /(['"])[^\1]*\1/ わがRuby1.9.1ではこうなった re = /(['"])[^\1]*\1/ p %('\1')[re] #=> nil p %('hoge'hoge')[re] #=> "'hoge'hoge'" いちおう念のために言っておくと クオート文字列にマッチする正規表現を求めているわけじゃなくて 文字集合内で後方参照や部分式呼出しができるか否かの確認ね
525 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 00:23:29 ] >>457 が何でそうなるのか解説求む
526 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 00:27:01 ] >>525 >>454
527 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 00:28:31 ] globってワイルドカードでも正規表現でもないのか なんでこんな面倒なもん作ったんだ
528 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 00:31:15 ] いや、zshの**を取り込んでるくらいで、 ワイルドカード(UNIXシェルの、だが)だよ。
529 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 00:31:34 ] ああ勘違いしてたわ txtだけはじかれてるのかと思った
530 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 00:32:09 ] ほぼワイルドカードじゃね?
531 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 00:32:50 ] あら遅レス失礼した
532 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 00:33:41 ] globにlsコンパチの引数受け付けるようにしてくれ
533 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 00:34:20 ] >>532 UNIXで誰がファイル名展開をやってるか知ってるかい?
534 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 00:44:33 ] えっ? 誰かがやってるなんてことあるわけないでしょう?
535 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 03:16:47 ] echo *
536 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 03:27:47 ] もうshellの機能をrubyに組み込むべきだなw login shellを/bin/rubyshにできていいかもしれないw
537 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 07:53:49 ] RubyShell って面白そうだな。 誰も使わないだろうけど。
538 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 07:55:47 ] RashだかRushってシェルがなかったっけ
539 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 08:46:18 ] イラネ
540 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 09:30:18 ] とある人のウェブページに、perlをログインシェルとして使ってみた報告があるぞ。 一度読んでおくといい。
541 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 09:33:51 ] いやRushが既にあるから
542 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 11:51:29 ] コマンドライン引数は定数じゃないの? 普通に文字列を代入できるんだけど
543 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 12:01:40 ] >>542 Rubyの定数は、警告 warning: already initialized constant ARGV は出るけど代入自体はできる。 あ、あと、 ARGV << 'hoge' なんてのは「定数への代入」じゃないからな。
544 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 12:03:05 ] $ ruby -e "ARGV=nil" -e:1: warning: already initialized constant ARGV いやきちんと定数として警告出ますが というかただの定数に過ぎない Rubyはこれを起動時から用意してるだけで、用意したあとは特別扱いをしない ただの配列を指す定数で、配列としての動作に従う 配列だから、要素を弄る限りはオブジェクトIDが同一で、定数としての適正を失わない irb> arr = [1, 2, 3] irb> arr[0] = 'one' irb> ARGV[0] = 'one'
545 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 12:18:43 ] 代入はできるけど、データのコンテナとして ARGV を使うのはおすすめはしない ただ、これは グローバル変数と定数を使う→ クラス変数を使う→ インスタンス変数だけを使う→ 全部引数での受け渡しにする→ 引数の数が大量になって鬱陶しいのでアクセサメソッド経由のインスタンス変数と引数の併用にする というような変遷をどうしてもみんな辿るので今はまだ気にしなくてもいいとも言える
546 名前:542 mailto:sage [2010/03/16(火) 12:25:44 ] とにかくコマンドライン引数には入れるなってことでしょ
547 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 12:47:18 ] def hoge= この=って何?
548 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 13:00:04 ] >>547 そのまんま 「hoge=」 という5文字の名前のメソッド ただ、末尾に = があるメソッド定義を Ruby は特別に扱うので、引数つきで定義しておいたほうがいい あと、foo.hoge = と = の前に空白があっても、Ruby はとりあえず foo のメソッドの中から hoge= を探す foo.set_hoge(v) とするよりも foo.hoge = v と書けたほうがなんかわかりやすくね、という理由で特別扱いされてる
549 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 13:07:59 ] 「プログラミングRuby 第2版 言語編」ですが、今から読むには 古すぎますか?それとも第3版が出て、絶版になる前に読んでおく べき? たのしいRuby、Well-Grounded Rubyist、初めてのRuby は読みました。
550 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 13:08:28 ] >>548 理解した、ありがとう
551 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 13:16:29 ] >>548 >「hoge=」 という5文字の名前のメソッド 通常の方法では代入文でしか呼べないから、ただのメソッドではなく演算子定義の一種と見た方がいい 一応引数無しでも定義できるけど__send__使わないと引数なしでは呼べない
552 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 13:17:42 ] >>551 Rubyの演算子はメソッドですよ
553 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 13:24:32 ] Rubyのユーザーは学生と暇人が多いのか? C/C++のスレには全然書き込みが無いんだけど Rubyは簡単だから、学生に人気があるのかな
554 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 13:29:41 ] 最近質問が多いね、春休みなんじゃないの? まあ俺も春休みだけど。。
555 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 13:30:46 ] 去年からずっとやすm
556 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 13:31:17 ] 仕事探せ
557 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 13:32:16 ] >>555 勝った!
558 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 13:33:11 ] >>557 お前は必死に仕事探せ
559 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 13:35:25 ] 学生と暇人とニートがいないとプログラミング言語は成長致しませぬゆえ
560 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 13:37:43 ] 学生と暇人なんて放っておいても沸いてくるんだから 無職連中はとりあえず生活基盤作れ
561 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 13:39:35 ] 暇な香具師を無料で奉仕させてこそオープンソースだしな。
562 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 14:18:15 ] >>549 初めてのRuby(yugui本)を読んで自分のものと出来たのなら 好きに進んでいいよ。
563 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 14:43:10 ] Rubyはいつになったら仕様が固定されるの? 安心して使えない
564 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 14:48:04 ] 1.8 は少なくともあと5年は使えるな。
565 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 15:06:10 ] >>562 レスどうも。 ツール作りでもしてみます。
566 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 15:08:40 ] 本の内容が新しいかどうかという話なら、新しくはない 1.8.7の1.9新機能入りプログラミングができないというのはなんとも歯痒い が、それはWebの情報でアップデートできる程度なので問題はなさそうかも むしろ最初からこれ教えたら混乱しそう
567 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 16:19:22 ] >>563 固定化されることはないと思う
568 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 16:22:33 ] >>563 はそもそも使わないからどうでもいい
569 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 18:52:28 ] ちなみに今から使い始めるならどのバージョンがお勧めなんだ
570 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 18:58:53 ] >>569 はテンプレも読まないからどうでもいい
571 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 18:58:54 ] 始めるだけなら 1.8.7 の最新だと思うが、 最新(p249)はString#inspectで最後の多バイト文字が文字化けするという デバッグや実験中に微妙にイラッとするバグがある。 気になるなら p174 で。 1.9系は夏に1.9.2が出るのでそのときまた判断だな。
572 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 19:16:27 ] やっと1.9sp2が出るのか。
573 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 19:18:21 ] それはまだ 1.9正式が出ただけ sp1が今度出る
574 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 19:22:45 ] >>571 $KCODE を設定した上で p で日本語を表示しようとした場合に最後の文字がバイト列のままになる だ p で日本語を表示しようとさえしなければ問題はないし、俺は表示しようと思ったこともない というかむしろ p を使うような事態のときは1.9でもデフォルトでバイト列表示しろやわかりにくいわぼけー どういう日本語を普段扱ってるかで違うんだろうな、このへん
575 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 19:25:49 ] p の意義からしてエンコーディングを考慮するほうが正当 ShiftJIS 文字列とか表示されて端末乱れるのはイラッとくるが
576 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 19:34:14 ] オブジェクトを機能拡張するためにモジュールで拡張したんだけど さらに状態の保持が必要な機能追加がしたくなった モジュールへの修正じゃ対応できないの?
577 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 19:35:16 ] require 'Hoge' include Hoge なんで、requireにはシングルクォートを付けないと怒られるのに includeには付けなくても怒られないの? たまたま、そうなっただけなのかな〜
578 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 19:41:28 ] >>577 require は基本的にはファイルパス 実際のファイルの大文字小文字が考慮される (が、あまりにも面倒なのでファイル名の時点で小文字だけにしようという取り決めがある) include の引数はモジュール名、つまり定数
579 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 19:44:08 ] >>576 すれば include はするたびにその順番に機能する
580 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 19:44:15 ] require 'Hoge' は主ファイル名だからじゃね?
581 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 19:46:41 ] >>578-580 ありがとう
582 名前:576 mailto:sage [2010/03/16(火) 19:47:24 ] >>579 (and all) どうすれば状態を保持できますか?
583 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 19:51:32 ] 状態って何
584 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 19:52:35 ] >>577 requireも単なる関数的メソッドとして実装されているのも理由の一つ Hogeというキーワードはrequireの実行を終える前には当然定義されていないし 予約語でもないから、リテラルを使うしか渡す方法(requireメソッドを実行する方法)がない 「Hogeをrequireしろ」「Hogeってなんだ?」 「Hogeを読めばわかる」「だからそのHogeって何だよ」 NameError: uninitialized constant Hoge Symbolでもよさそうだけどそのへんは>>578 なんだろう
585 名前:576 mailto:sage [2010/03/16(火) 20:01:14 ] もともとのオブジェクト以外に追加の情報を保持したいんですが たとえば配列クラスに最大値を保持するなど
586 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 20:22:21 ] >>585 エスパー発揮で obj = [1,2,3] obj.instance_eval{ @mymax = self.max } obj.define_singleton_method(:mymax){ @mymax } p obj.mymax なんか頭の悪そうなコードですまん
587 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 20:25:30 ] >>585 本当にしたいことを書いたほうがいいと思う include ではクラスにもともとあるメソッドを上書きすることができる でも、おそらくはそれが解決方法ではないと思われ 組み込みや標準添付のクラスを拡張することは好ましいこととは考えられてない(オープンクラスのくせに) 自分でクラスを作ってインスタンス変数とかにオブジェクトを保持するほうがいい オブジェクトの操作は自作のクラスのメソッド経由で行う class HogeData def initialize(a) raise ArgumentError, 'must be Array' unless a.kind_of?(Array) @hogedata = a end def <<(e) return if @hogedata.size > 2 @hogedata << e end def data; @hogedata; end end irb> hoge = HogeData.new([1,2]) irb> p hoge.data [1, 2] irb> hoge << 3 irb> p hoge.data [1, 2, 3] irb> hoge << 4 irb> p hoge.data [1, 2, 3]
588 名前:576 mailto:sage [2010/03/16(火) 21:18:59 ] では言い直します。 自分で書いたクラスのオブジェクトに追加の情報を持たせるには、 継承したり別のクラスに包含すれば可能だけど、すでにModuleで拡張しているので そこはできるだけ触らずにModuleに少し書き足す程度で実現できないか? Module内でインスタンス変数的な情報を保持する何かを定義できないか?
589 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 21:34:12 ] >>588 よくわからんけどこれでダメ? ダメならどうダメかをコードとして提示してくれると他の案を言えるかも module M end class C include M def foo @foo end end module M def bar @foo = :bar end end obj = C.new obj.bar p obj.foo #=> :bar
590 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 21:53:46 ] >>586 Moduleの使い方・考え方が間違ってるような気がするなあ あるクラスがModuleをincludeした時点でそのクラスのインスタンスは 存在していないわけだからインスタンス変数を設定したり保持したり できないでしょ アクセサの定義ならModuleでもできるけど module M def data @data end def data=(arg) @data = arg end end class C include M end
591 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 21:55:33 ] 591レス目 ズレている人はレスデータの再読み込みをしてください
592 名前:576 mailto:sage [2010/03/16(火) 22:01:45 ] それだとobj.barを書かなければいけません。 質問は、Module内を書き換えるだけで、外側には一切手を加えずに@fooを初期化できるかということです。
593 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 22:02:14 ] なにその出来の悪いGUIのリストみたいな現象
594 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 22:04:28 ] module内でinitialize書き直したら?
595 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 22:08:09 ] >>594 それはできない
596 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 22:16:53 ] ほんとにできない?
597 名前:576 mailto:sage [2010/03/16(火) 22:18:32 ] >>590 インスタンスが作成された時点でincludeされたmoduleを通して 何かしらinitialize的メッセージが送られるようなことは無いよねって話です あるいはC言語で言うところのスタティック変数は無いよねってことでも結構です >>594 もう試した
598 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 22:20:06 ] module M def self.included(klass) klass.class_eval do def initialize @foo = :bar end end end end class C def initialize @foo = :baz end attr_reader :foo include M end p C.new.foo #=> :bar
599 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 22:21:22 ] >>595 めんどくさい、が正解だと思う include先が継承とかしてたらsuper呼ばんといかん
600 名前:576 mailto:sage [2010/03/16(火) 22:51:09 ] >>598 すばらしい!! ありがとうございました。
601 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 00:02:54 ] 読み込むモジュールを変えるとinitializeが スイッチされるってのは面白いかも なんか騙されてるような気もするなあ
602 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 00:16:58 ] まあ、あまり性質のよいものではない
603 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 00:26:10 ] 複雑なマッチ条件を使いたい場合、 if /hoge/ =~ obj.str and /huga/ !~ obj.str and ... と延々と続いて見づらいのですが、スマートに書けますか?
604 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 00:27:24 ] >>603 メソッドにしてしまうのがひとつの手ではある 基本的には全部書くしかない
605 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 00:31:44 ] 自分が時々やるのは match1 = obj.str =~ /hoge/ match2 = obj.str !~ /fuga/ match3 = obj.str =~ /fuge/ if match1 and match2 and match3 body_stmt end こう。 でも条件分岐だけで10行超えるなら独立のメソッドにする
606 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 01:02:19 ] なるほど。ありがとうございます。
607 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 03:52:24 ] &&= 使った方が無駄なマッチングがないんじゃないかな。 正規表現のマッチくらいでそんなに重くなったりしないけど〜。