- 1 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 04:30:21 ]
- プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
【Ruby1.9 は不安定な開発版であり初心者には全く向きません】 【最新安定版の Ruby1.8.7 の使用をお勧めします】 ※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。 1.9 の新機能の一部が利用可能なので初学者にお勧めです。 ※ただし十分安定しているとは言えないので プロダクション環境での利用にはお勧めしません。 関連スレやURLは>>2-8あたりを見てください。Ruby on Railsの質問は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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
- 500 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 22:26:51 ]
- 対
応 で き る も ん が 作 れ るなら作ってみな という感じだ 特にEncode関連
- 501 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 22:29:24 ]
- 文法エラーが出なくなる程度の対応は進めてもらえると
いちユーザーとしてもいきなり挫折しなくて済んでいいかも ruby1.9 ./hoge.rb しただけで普段見たことも無いファイルのやたら多い行数のとこでSyntaxErroroとか挫けるし
- 502 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 22:30:51 ]
- >>499
1月に延期されたとかなんとか
- 503 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 22:32:38 ]
- 1.9に自作ライブラリを対応させるためのHOWTOとかそういう文書ってある?
1.9.0 features を読んで逐一チェックするしかない?
- 504 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 22:51:10 ]
- >>499
12月25日に予定されてるのは、1.9.1のRC(リリース候補)で正式版じゃない といっても、現時点でもう1.9.1の仕様は固まってるはずなので、今から作り始めても良いと思うが
- 505 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 22:51:59 ]
- >>503
たぶんrubikitichがホッテントリ狙って書くよ。
- 506 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 22:58:22 ]
- ぬう
- 507 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 23:10:00 ]
- 下の文字列がなぜ文字化けするのですが、何が原因でしょうか。
$KCODE="s" tut = "12月28日 夢見師(プリンセスソフト、7,140円) " p tut
- 508 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 23:13:46 ]
- s?
- 509 名前:デフォルトの名無しさん [2008/12/14(日) 23:14:57 ]
- すいません、
#!/usr/local/bin/ruby -Ks の1行入れてなかったことによるものでした。お騒がせしてすいません。 >>508 sjisのことです。
- 510 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 23:49:31 ]
- やっぱり詰まった...。
以下a1の文字列の内()とその中身を消したいのですが、 なぜか ) だけ残して全て消えてしまいます。 #!/usr/local/bin/ruby -Ks $KCODE="s" a1="最強 東大将棋6(毎日コミュニケーションズ、2,940円) " a1 = a1.gsub(/.*?月.*?日 /,"") a1 = a1.gsub(/(.*?円)/,"") p a1
- 511 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 23:53:36 ]
- 正規表現中のカッコは特別な意味を持つメタ文字だよ
正規表現中でカッコそのものを表すなら \( や \) のようにエスケープしなきゃだめ
- 512 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 01:03:05 ]
- >>511
え゛っ、そうなんですか!! /に\/しなきゃならないのは知っていたですが、()もでしたか。 他でもポカしてそうだな。 ご解答ありがとうございます。
- 513 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 01:04:30 ]
- >512
英数はそのまま書くとその文字、\を付けると特別な意味になることが多い。 逆に記号はそのまま書くと特別な意味があることが多く、\を付けるとその文字ってことが多い。
- 514 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 01:41:29 ]
- てかマニュアルに全部書いてあるんだからきちんと読め
記号の意味そのものは必要なときに調べればいいから覚えなくてよし エスケープが必要な文字かどうかだけを記憶すればおk
- 515 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 09:11:03 ]
- ピリオドも意味もってるんだけど
間違ってエスケープせずにピリオド使ってても そのまま動いてしまって気付かないことが多い あとで忘れた頃に問題が表面化するから初心者は注意な
- 516 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 09:54:50 ]
- image_paths = filepaths.find_all{|e| /.jpg\Z/ =~ e}
で99.99%くらいは普通に動作するんだよな
- 517 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 10:02:26 ]
- 正規表現の粒度をどれくらいにするかというのは永遠の問題
わかってない人が「メールアドレスにヒットする正規表現を書け」とか課題出したりするんだが
- 518 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 10:27:14 ]
- "(a)"
から /\s*\(a\)\s*/ を生成するのってどうやるんですか? a = "(a)" /\s*#{a.escape}\s*/ みたいに書ければいいんだけど
- 519 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 10:41:09 ]
- >>518
マニュアル読んどけ Rubyの正規表現はただのオブジェクトだからRegexpクラスのメソッドで生成できる /〜/ で書くのはただのわかりやすいエイリアスに過ぎない あと、半角スペースと \s には直接の関係はないから、あらかじめ \s で書いておくしかないよ 個人的には半角スペースを \s で表現するようにするのは後々罠に落ちるから全くお勧めしない 半角スペースがあるのなら、どんなに正規表現の見かけがマヌケになっても半角スペースで書くべき
- 520 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 11:10:37 ]
- >>518
/\s*#{Regexp.escape(a)}\s*/ Regexp.quoteという別名も。
- 521 名前:455 mailto:sage [2008/12/15(月) 21:43:26 ]
- >>487
あんちゃん、ありがとう。 せつこ、このスレで日本一のpragger目指すんよ。
- 522 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 21:57:53 ]
- 技術的には便利だけど、他のことで代替できるよね、という微妙な立ち位置がどうにも…
プラガブルであることのメリットがイマイチ生かされてないんだな
- 523 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 05:42:09 ]
- www.google.co.jp/trends?q=PHP%2Cruby&ctab=0&geo=US&geor=all&date=all&sort=0
逆転しそう
- 524 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 05:46:15 ]
- www.tiobe.com/index.php/content/paperinfo/tpci/index.html
逆転もなにも、世界的には10位以下に後退したダメダメ言語だけどね (ただ、Pythonが下がってたりLogoが爆上げしてるところから見ても かなり変な順位づけであることは間違いない)
- 525 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 19:07:50 ]
- D:/desktop にある、
001test.txt 002test.txt 003test.txt という複数のファイルを、 数字の部分に正規表現を使ったパスで一度に開きたいのですが、 どうすれば良いでしょうか? 次のように書いているのですが上手く行きません。 files = /D:/desktop/[0-9]+test.txt/ system("start #{files}")
- 526 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 19:21:31 ]
- リファレンスマニュアルの正規表現のとこ読め
あと %r の使い方も調べとけ
- 527 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 19:24:19 ]
- よく見たら正規表現関係無いじゃないか
Dir.glob
- 528 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 21:05:12 ]
- >>527
御返事ありがとうございます。 それで調べたら Dir.glob は正規表現ではなくワイルドカード対応と書いてあるのですが、 これは正規表現には対応していないということではないでしょうか。 >>525の書き込みはあくまで勉強中の実験のものなので、 実際に使う時にはパスを正規表現で指定したいのです。 また、>>525では省略しましたが、 開きたいファイルは似たような名前が多いので、最終的には、 name = ●● files = %r("D:/desktop/[-9]+●●.txt") system("start #{files}") というような形にして、●●の部分を書き換えるだけで 任意のの複数のファイルを開けるようにしたいのです。
- 529 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 21:28:50 ]
- >>528
そういうのだと全ファイル名から正規表現でselectせざるをえないかな。
- 530 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 21:50:09 ]
- Rubyではselectはあまり使わない
find_all と呼ぶ
- 531 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 21:59:18 ]
- >>528
まったく同じことを繰り返すことになるが、Rubyのオブジェクトについての考え方学んでくれ 返り値がただの文字列なら、それはただの文字列(String クラスのオブジェクト)で、何か特別なものがあるわけじゃない Stringクラスのメソッドが完全に全て動作するし、文字列オブジェクトを引数にとるメソッドは全て完全に動作する メソッドの返り値がどのクラスのオブジェクトなのかということは絶対に意識しないと駄目よ 正規表現を使いたいなら、引数…、まあ、引数の見かけしてないことが多いけど、マッチ試行対象は文字列だ いちばん単純な状態で必要なのは、ディレクトリ中のファイルを文字列で返すメソッド その文字列の一群の中から、正規表現にマッチする文字列を探して、その文字列をどうにかすればいい
- 532 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 21:59:19 ]
- >>530
ソースは?
- 533 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 22:43:20 ]
- target = 'D:/desktop/*'
filter = /\d+test.txt/ system(Dir.glob(target).select{|i| i =~ filter}.unshift('start').join(' '))
- 534 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 00:24:48 ]
- >>533
なあ、初心者スレなんだから、もっと分かりやすく書こうぜ filenames = Dir.glob('D:/desktop/*') filenames = filenames.grep(/^¥d+test¥.txt$/) system "start #{filenames.join(' ')}"
- 535 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 00:34:21 ]
- >>534
改行が存在しない文字列に対して ^ と $ は不適 代わりに \A と \Z を使おう
- 536 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 00:43:57 ]
- どなたかアドバイスください。ruby1.8.7です。
require 'tk' がうまく いきません。以下のようなメッセージが表示されます。 in `require' : no such file to load --tk (LoadError) どうすればいいでしょうか?
- 537 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 00:46:52 ]
- >>536
Tcl/Tkが入ってないんじゃね?
- 538 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 00:48:23 ]
- >>536
tkライブラリを見つけられなかった。 tkがインストールされない環境(ってなんだろ?)か $LOAD_PATHがおかしいんじゃない?
- 539 名前:536 mailto:sage [2008/12/17(水) 01:02:12 ]
- sudo find / -name tk で検索したところ
/usr/local/lib/ruby/1.8/test/unit/ui/tk /usr/lib/ruby/1.8/test/unit/ui/tk が見つかったんですけどこれとは違うんでしょうか? ちなみに echo $LOAD_PATHでは何も表示されませんでした。
- 540 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 01:13:10 ]
- >>534
質問者の求める「正規表現の使えるglob」が提供されて無いから別解を提示しただけ 分かりにくいってのはわざとそうしてるんだから許してよ >>539 それ違う OS何?tcl/tk入ってる?wishコマンド使える?
- 541 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 08:10:32 ]
- >>535
>改行が存在しない文字列に対して ^ と $ は不適 逆だろ。改行が存在しない文字列だからこそ ^ や $ を使っても構わない。
- 542 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 08:13:15 ]
- >>540
>分かりにくいってのはわざとそうしてるんだから許してよ なんでそんなことをするの 分かりやすく書けないのをごまかしてるだけじゃねーのかよ
- 543 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 08:22:36 ]
- >>541
あまりRubyの正規表現に詳しくない人間が見たら 「ああ^と$は文字列先頭と末尾なんだな。Perlと同じなんだな」とか 勘違いしちゃうよ
- 544 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 08:44:02 ]
- >>534
>system "start #{filenames.join(' ')}" system 'start', *filenames でよくね?
- 545 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 10:21:20 ]
- >>544
そんなこと言ったら2行目はメソッドチェーンで消えるし、 対象ディレクトリが専用ディレクトリならそもそも Dir.glob のワイルドカードつき文字列でも充分だ 君が *引数 をオボエタテだからだからといってわざわざ難しくする必要はない
- 546 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 10:28:48 ]
- >>541
目に見えない文字や場所にマッチする正規表現は慎重に使ったほうがええぞ 半角空白にマッチさせるために \s を使ったりしないだろ それと同じこと
- 547 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 10:30:19 ]
- >>545
544じゃないけど、一般にsystemの引数は ' ' でjoinするより * で渡すほうが空白を含むファイル名等の問題をより安全に回避できるので、* のほうがお勧めだけどね
- 548 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 10:37:16 ]
- *の引数展開はマニュアルでも辺鄙なとこにしか書いてないからな
使うなら堂々と初心者向け解説の3ページ目から使いまくるくらいの感じにして欲しいとは思う
- 549 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 10:45:05 ]
- `
mkdir foo mkdir bar ` みたいに途中でシェルスクリプトだらだら書けるようなやり方ってない? 上の書き方だとmkdir fooだけ実行されるっぽい
- 550 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 10:49:19 ]
- `` はシェルコマンドを実行したいときに使う記法じゃないぞ
返り値が必要なときに使うもんだ system 使え
- 551 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 10:57:56 ]
- >>544 >>547
やってみた?
- 552 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 11:17:32 ]
- 534です。
>>547 たいへん参考になりました。 ただ初心者スレで使うには説明が必要ですね。
- 553 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 11:21:00 ]
- >>550
system " mkdir foo mkdir bar " でも変わらなかった
- 554 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 11:31:24 ]
- >>553
シェルスクリプトとみなせる環境であるなら全部実行できるはず 動作しないとしたらWindowsかCygwinだな
- 555 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 11:33:20 ]
- 渡した文字列がshに渡るんだから
mkdir foo; mkdir bar だろう。 つーかそんなことしなくても、 mkdir foo bar でいいだろう。
- 556 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 11:35:50 ]
- >>555
最新5レスしか読めない携帯からのご参加ですか?
- 557 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 11:38:56 ]
- >>555
mkdir したいって話じゃねーだろ >>553 Windowsではでっかいひとつのスクリプトとして実行するしかなさそうだな
- 558 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 11:39:43 ]
- つーか、全部シェルスクリプトで書けば?
system "foo.sh" したらいいやん
- 559 名前:540 mailto:sage [2008/12/17(水) 12:15:12 ]
- >>542
初心者にはメソッドチェーンが読みにくいかもしれない、とは思ったけど 読み解くのも勉強になるだろうと思ってそのまま書いた grep と system(*args) は知らなかったから書き直すよ target = 'D:/desktop/*' filter = /\d+test.txt/ command = 'start' system(*Dir.glob(target).grep(filter).unshift(command))
- 560 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 14:15:15 ]
- >>559
>system(*Dir.glob(target).grep(filter).unshift(command)) なぜわざわざunshiftを使うのか分からん。>>544の通りに system command, *Dir.glob(target).grep(filter) でええやん。
- 561 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 14:34:26 ]
- すっごい前に、配列からの抽出にpopとshiftを使う子がスレにいたな
キューじゃないものに pop とか使ったらダメよ混乱するから
- 562 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:00:35 ]
- >>530
RubyのselectはSQLのselectじゃなくて Smallltalkのselectに由来するって知ってるか?
- 563 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:09:54 ]
- >>561
普通に使ってるし、混乱するって話もあまり聞かないぞ そもそもpopやshiftを使わないとすると、代わりにどんな風に書くんだ?
- 564 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:14:58 ]
- >>562
「外来語」の detect と select で悩むくらいなら find と find_all を使うなあ、俺は というかなんでそこで SQL が出てくるんだ?
- 565 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:21:17 ]
- 当時の様子は知らないし、同じくキューでない配列にも普通にpop/shiftは使うけど
配列から取り除くことが作用ではなく副作用になる場合以外、 「配列から取り除く(ついでに値を得る)」ではなく 「値を得る(ついでに取り除く)」だと思ってるとミスするという話かと。 def get_first(ary) ary.shift end ary = [1,2,3] put get_first(ary) # aryが破壊される
- 566 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:35:31 ]
- >>563
同意 queue じゃなくても、popもshiftも使うよな
- 567 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:38:04 ]
- キューでもないのにpopが積極的に必要になる場面が思いつかない
イテレータ拒絶派か何かか?
- 568 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:42:26 ]
- >>567
split結果の先端や終端にゴミついてるのが確実なときに切り落とすためとか。
- 569 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:55:45 ]
- >>568
delete_at(0) 配列先頭のデータが欲しいときに data = arr.delete(0) と書くのが奇妙なのと同程度には # 先頭は不要 arr.shift と書くのは奇妙だと思う shift に関してはコマンドライン引数を順に扱うときに shift コマンドを使った経験が後を引いてるのかもしれないが、 ここは Ruby だし shift は変
- 570 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:57:55 ]
- そろそろ誰の何の質問の答えているのかはっきりさせようか
- 571 名前:デフォルトの名無しさん [2008/12/17(水) 15:58:58 ]
- じゃあどう書けばRuby的なの?
- 572 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 16:19:46 ]
- 配列を破壊しなければうまくいかないかどうかによって違うんじゃね
- 573 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 16:19:54 ]
- >>570
>質問・要望・雑談などどうぞ。 >>569 奇妙なのはそのコメント文だろうw 代入操作がないことから不要なことは自明。 返値があるものは代入しないといけないなんてルールはないし。 >>565のように先頭や末尾の要素を配列から取り除くのが主の操作で、 popやshiftにそれ以上の意味(=キュー専用)はないと考えてる。 だからdelete_at使えというのは、firstやlastもat(0)やat(-1)にしろと 言っているように聞こえる。 キューでない配列に対してpopやshiftがよろしくないなら Array#pop #shift #push #unshiftは廃止してQueueクラスを用意するべき。 運用で制限しようとするほうがおかしい。 (threadのものと名前がかぶるけどそれはさておき)
- 574 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 19:49:45 ]
- 難しく考えたことねえな
ところでその考え方だとpopはキューに使っちゃダメだろ あれはスタックに使うものでは?
- 575 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 21:13:20 ]
- >>569
切り捨てるより、shiftで切り出された結果を使う方が多い param = ARGV.shift line = lines.shift とか
- 576 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 21:39:05 ]
- each でブン回すのが Ruby 的ではあるんだろうな
- 577 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 21:54:01 ]
- >>574
push⇔shift unshift⇔pop これでキューが出来上がる。ただし左がエンキュー、右がデキュー
- 578 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 21:59:30 ]
- 素直にQueueクラス作れよ、というのは昔から言われてはいたな
というか、説明もないしキューの概念知らない人もそこそこいるのでは
- 579 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 22:02:02 ]
- unshiftだけ遅いから注意が必要
- 580 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 22:26:23 ]
- unshift遅くなくね?
- 581 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 22:33:43 ]
- >>578
自慢だが知らん popやshiftは配列から1個取る便利メソッドだと思ってる
- 582 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 23:47:16 ]
- >>531
丁寧な解説をありがとうございます。 Rubyの「オブジェクト指向」という考え方が何となく判って来た気がします。 つまり、文字列などの何らかのデータをオブジェクトとして扱い、 その内容に変更を加えたデータ(や当該コード)もオブジェクトにでき、 更にそのオブジェクトに変更を加えたデータも・・・・・ という事が限りなくできる、ということなんですね。 つまり「全てがオブジェクト」なんですよね? そして、そのあらゆる段階でのオブジェクト(データ)に自分で名前を付けることによって、 任意の段階でのデータ(オブジェクト)をコードのどこでも簡単に使い回しできるようにしたものが、 Rubyのオブジェクト指向、だと理解しました。 そして、初心者が常に気を付けるべき点は、 データを処理するためのメソッドが「どのオブジェクトを対象としているのか」という点にある、 というのが>>531でのアドバイスの要点だと思いました。 基本的な理解はこれで合っているでしょうか? (^^;)
- 583 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 23:53:26 ]
- Rubyは肯定(否定)戻り読みには対応していないんでしょうか?
肯定(否定)先読みには対応しているようですが。 使っているエディターがPerl準拠の正規表現なので 今までは戻り読みが使えて便利だったのです。
- 584 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 00:02:13 ]
- lookbehind は鬼車が要るはず
- 585 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 00:29:31 ]
- >>580
a = []; 50000.times { a.push(0) } と a = []; 50000.times { a.unshift(0) } を比べてみな
- 586 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 00:33:16 ]
- yield
- 587 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 00:57:28 ]
- >>584
ほほう。こういうものがあるんですね。 次期Rubyに搭載予定だそうで凄そうです。 それで鬼車のホームページには、 >* 5.xはUnicode Property/Scriptを提供 >* 2.xはRuby1.6/1.8組込みライブラリとして動作する。 (2006年末で保守を終了) と書いてありますが、どちらをインストールしたら良いんでしょうか。 詳しい方がいらっしゃったら御教示願います。
- 588 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 08:51:32 ]
- >>580 じゃないが、試してみて >>585 の優しさを知った。
50000 は絶妙なとこだな。(celeron 1.3GHz)
- 589 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 09:31:25 ]
- そんな中古でも売ってないような激遅CPUで話にしゃしゃり出られても困る
- 590 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 09:47:36 ]
- 今の平均的なCPU速度ってどのくらいなのかね
自分でちょっと重い処理するライブラリとか公開したときちょっと気になる
- 591 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 09:51:40 ]
- >>589
Core2Duoでも相当差が付くぞ
- 592 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 09:59:23 ]
- >>589
そのご立派なCPUで500000とか試してみなよ。
- 593 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 10:05:52 ]
- 噛み付かれた>>588カワイソス
- 594 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 10:09:49 ]
- >>590
2GHzくらいじゃね
- 595 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 10:17:43 ]
- てかPentium4からこっちはよくわからん理由で処理速度が違うから周波数アテにならん
- 596 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 11:26:59 ]
- 公開するライブラリの重さなんて気にしなくてもいいんでは?
使う人次第で負荷なんて桁で変わるんだし。 軽く使えるノウハウでもついでに書いとけば喜ばれると思うけど。
- 597 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 12:02:34 ]
- RubyのArrayはリストとかじゃなくてまんま配列なので、
pushと違ってunshiftは必ずメモリのコピーが発生するから ってことかな>速度差
- 598 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 12:34:38 ]
- IronRubyって終わったんでしょうか?
- 599 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:12:50 ]
- >>587
どちらもインストールしないでrubyの1.9.1をインストールする。 まだリリースされてないけど。
- 600 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:13:58 ]
- >>598
終わったというか、まだ始まってない。 そもそもIronRubyの動作基盤であるDLRがまだリリースされてないし。
|

|