1 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 11:47:53 ] オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。 Ruby Home Page www.ruby-lang.org/ja/ = 前スレ Rubyについて Part 29 pc11.2ch.net/test/read.cgi/tech/1193668038/ 過去スレ・関連スレは >>2-
496 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:40:12 ] >>495 「どう」書いたら「どう」なることを期待してるわけ? 「なぜ」そうなるかはソースを見れば書いてある。
497 名前:495 mailto:sage [2008/02/09(土) 18:42:29 ] 1.timesをかましただけでlambdaの挙動が変わるのはなぜですか?lambdaなら returnしてもbazから返らないと教わったのにその通りになってません。
498 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:43:36 ] >>496 出たw 「「「「「「「「ソースを見れば書いてある」」」」」」」」
499 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:44:23 ] Proc.new{} == メソッドに渡すブロック
500 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:45:14 ] ソースったって、rubyという言語のインタプリタの単なる1実装のソースに過ぎないんだろ。 rubyがまともな言語なら言語仕様をきちんと示すべきなんだけどな。
501 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:45:26 ] 学生ってC#かjava使って宿題してんじゃないの? なんでこんなにわいてんの?新人がゆとりなだけか?
502 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:47:27 ] >>501 あーこのスレだけ見てるとわからんな
503 名前:デフォルトの名無しさん [2008/02/09(土) 18:48:37 ] ソースを見る人次第でどんな風にも動作するあいまいな言語っていらないよね。
504 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:49:39 ] もうブロック内でreturn使うの諦めようぜ バージョン間での非互換や、書き方による差異でゴチャゴチャになってるんだから
505 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:49:42 ] もとはPythonスレで出た流れを引き取った格好か
506 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:52:24 ] >>503 ソースにはあいまい性はないよ。書いてある通りに動くのだから。 問題は、作者が開発しているインタプリタのソースが唯一の厳密な仕様書になっていること。 まともな言語なら、ソースではなく初めに仕様書ありきであるべき。
507 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:53:45 ] >>505 ?? この話題を始めたのは俺だが、Pythonスレなんて見たこと無いが。
508 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:54:52 ] >>504 return関係は基本は一応「見たまま」なんだけどね 論理的に動作を追おうとすると変なことに
509 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:57:56 ] 言語仕様を決めて、それに従えば問題ないんだけどな。
510 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:23:51 ] なぜ、と問われたら何だって「ソースにそう書いてある」としか 答えられないんじゃないかと。 標準仕様がある言語なら、自然言語(まれに形式言語)で、 仕様書という「ソースコード」が書いてある、ってだけだし、それでも それを実装した処理系の変な挙動について「なぜ」と問われれば、 やはり「ソースを見ろ」としか答えられないが。 しかし、ruby 1.9.0 (2007-12-03 patchlevel 0) [i686-linux] だと 1.timesをかましてもbazから返らないんだよなぁ(笑)
511 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:27:56 ] >>510 なら、ソースのどこにどう書いてあるのか説明しろよ。 「ソースを見ろ」なんて全く有用な情報が無いレスなら書き込む必要は無い。
512 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:28:57 ] 「ソースを見ろ」==「デバッグしろ」
513 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:30:21 ] 標準仕様がないのに、何をどうデバッグすればいいんだ? どのように動作するのがバグの無い状態なんだ?
514 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:43:31 ] 元々は関数内関数(クロージャ)が欲しい、ってことだろ? >>504 で結論が出てるじゃん。 要は、returnは「メソッドから戻る」ものだから、ブロックから値を 戻したいんだったら、returnは使うなってことでFAだろ?
515 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:44:58 ] じゃあエラーではじけよ
516 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:48:37 ] 何故returnを「ブロックとメソッドから戻る」と定義できないんだろう。
517 名前:デフォルトの名無しさん [2008/02/09(土) 19:55:41 ] >>514 じゃあ値を返すにはどうしたらいいんだよ。
518 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:56:08 ] >>516 eachみたいにブロック付きメソッドを制御構造もどきとして使いたいからじゃない?
519 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:56:20 ] >>516 メソッド定義の中のブロックの中でreturnしたときとか Proc生成をメソッド内以外で行ったときとかに超紛らわしいからだろ
520 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:57:44 ] >>517 breakかcatch&throwを使ってください
521 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:01:27 ] 一応、メソッドから抜けてるのにreturnしようとするとErrorになる $ cat hoge.rb def foo Proc.new{return} end foo.call $ ruby --version ruby 1.9.0 (2007-12-03 patchlevel 0) [i686-linux] $ ruby hoge.rb hoge.rb:2:in `block in foo': unexpected return (LocalJumpError) from hoge.rb:5:in `call' from hoge.rb:5:in `<main>' $ ruby18 --version ruby 1.8.6 (2007-12-02 patchlevel 5000) [i686-linux] $ ruby18 hoge.rb hoge.rb:2:in `foo': unexpected return (LocalJumpError) from hoge.rb:5:in `call' from hoge.rb:5 リファレンスマニュアルにはreturnは「式の値を戻り値としてメソッドの実行を終了します。」 とあるから、単にブロックから戻るだけだったらおかしい、と主張はできるかな。
522 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:01:43 ] >>518 >>519 単にreturnでブロックから復帰して、その引数が呼び出し元(yieldやProc.new)に戻ればいいだけじゃないの。 何が紛らわしいのかわからない。
523 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:04:27 ] Rubyのブロックはreturnに曖昧さがあるってことでFA?
524 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:07:00 ] >>517 > じゃあ値を返すにはどうしたらいいんだよ。 ブロック内で最後に評価した式の値がcallとかyieldの返す値になる
525 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:10:30 ] ブロックからの脱出にbreakと同様にreturnが使えても全く問題ないと思うのだが。
526 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:34:38 ] >>524 goto実装すればOK。 func = Proc.new do result = -1 if (failed) result = -2 goto EXIT end ... EXIT: result end
527 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:42:54 ] 2.0でちゃぶ台返しマダー?
528 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:51:23 ] >>522 >>525 breakはwhileやuntilを抜けるためにも使われる、ということを忘れてないか whileの中でreturnするとwhileを抜けた! なんて動作はいくらなんでも困る
529 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:57:08 ] >>528 breakは最も内側のブロックからの脱出、 returnはメソッド、およびlambda、proc、Proc.newの最も外側のブロックからの脱出 と定義して問題あるのかな。
530 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 21:03:25 ] あー、nil に追加はマズイや。 Object.new で。
531 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 21:04:24 ] 誤爆
532 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:35:09 ] >>529 > breakは最も内側のブロックからの脱出、 breakはbreakで、ブロックではなくイテレータから抜けてくれないと困る $ cat hoge.rb def once # 1 回だけ実行するイテレータ yield p "2" end def foo once{p "1"; break} p "3" end foo $ ruby hoge.rb "1" "3"
533 名前:デフォルトの名無しさん [2008/02/10(日) 00:09:58 ] emacsにruby-modeを追加する方法がわかりません。 詳しく説明してるサイトを教えてください。
534 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:19:16 ] >>533 いささかスレ違い。emacsスレのほうがいいと思うが… load-pathにあるディレクトリに置いて、 ~/.emacsなりuser-init-fileなりに以下を追加。 (autoload 'ruby-mode "ruby-mode" "Mode for editing ruby source files" t) (set-alist 'auto-mode-alist "\\.rbw?\\'" 'ruby-mode) (set-alist 'interpreter-mode-alist "ruby" 'ruby-mode)
535 名前:デフォルトの名無しさん [2008/02/10(日) 00:28:48 ] 1.9からHashが順序保存か…。 けっこうこだわりないんだな。 言語仕様で保証しないところがチキンというか、 PHPで4→5で動作保証しないこともネチネチ言ってるMatzがな…。
536 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:47:37 ] これに依存するコードを書くことはまずないと思うからぶっちゃけかなりどうでもよい 2.0で導入されて、2.0が今の1.8くらい普及してから考える
537 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:50:43 ] 1.9でネチネチ言う奴は何なんだろうと素で思う
538 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:58:58 ] >>535 >PHPで4→5で動作保証しないこともネチネチ言ってるMatzがな…。 そんなこと言ってたの? 言ってたとして、これと Hash の順序保存とのつながりがわからない。
539 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 01:02:56 ] >>536 putsに配列を渡すと整形して表示する機能くらいどうでもいい機能 2.0に入ったとしても個人のスクリプトで意識して使えば便利だろうって程度だなあ irb> puts [1,2,3] 1 2 3
540 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 01:07:44 ] The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Python is better than ruby. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!
541 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 01:40:04 ] 日本語で桶
542 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 01:41:16 ] これ抜けてるだろ Python is betterPerl
543 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 01:46:08 ] どんな言語でも信者はキモイ証左といったところか。
544 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 09:47:32 ] ヤターrailsの風俗サイトできたよー www.momoiro.jp/cast/list
545 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 10:08:34 ] >>544 erogeek 乙www
546 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:14:04 ] >>537 だって、String#sg とかの糞名前を確定させなかったりするためには、 今がネチネチ言うときなんじゃないの?
547 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:41:38 ] >>546 それならMLでネチネチ言え。 それにmatz以外の開発者がある程度抑えてるから大丈夫だろ。
548 名前:デフォルトの名無しさん [2008/02/10(日) 15:10:01 ] >>418 > 可能だが、どこまで自然になればOKなのかは使う人によるからな・・・ > Rubyでも DSLは作られるが、 > 例えば、brainfu*k を再現するのは無理だろう 遅レスだがこれはどうよw ttp://d.hatena.ne.jp/ku-ma-me/20080208/p1
549 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:12:52 ] 厳密には無理なんだろうけど、そこまでやるのにワロタ
550 名前:デフォルトの名無しさん [2008/02/10(日) 15:36:13 ] 方向音痴な初心者です Rubyは自由性が在ると云う事は理解すべきですが、 変数は一つの定義で幾つ程、付けられますか?
551 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:49:05 ] 元のスレに帰れ
552 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 19:48:48 ] tkよりgtk2の方が良いよな・・・ というかtkを使わざるを得ない制約が有ってgtk2に見向きもしなかっただけなんだが。 tkは1.9への移行とtk8.5の仕様変更でゴチャゴチャになってるみたいだけど。 今後tkってどうなっちゃうの? オワタ? 次から作るならtkは避けたほうが無難かな?
553 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 20:34:13 ] 2010年になっても保守しなければならない代物なら立ち止まったほうがいいかもしれない 正直、gtk2だからマシというもんでもなく…
554 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 22:30:30 ] >>544 それがRailsであるっていうのはどうやって見分けるの?
555 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 22:36:49 ] 自己申告に決まってるだろ
556 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 22:41:18 ] >>552 同志よ。いま同じ問題を抱えています。 ruby/tkだと今は動いたとしてもバージョンアップしたら動くか心配だし、 gtkも同じように心配。 ということは一番安全なのはCGIを作ってブラウザで表示させるのがいい気がする。
557 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 22:54:31 ] MVCモデルで開発していくのが正解かなと思う
558 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 22:55:09 ] >>554 ttp://www.momoiro.jp/cast/list/hoge
559 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:01:30 ] URL#is_rails #=> true
560 名前:デフォルトの名無しさん [2008/02/10(日) 23:02:16 ] WebベースのUIはデータのやりとりが面倒くさい。 セキュリティとかもややこしいし。
561 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:03:10 ] PHPなら簡単ですよ
562 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:03:57 ] ちょっとりりちゃんに会いに言ってくる
563 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:04:15 ] バージョンアップで動かなくなる可能性を心配するならCで開発しなされ
564 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 00:01:03 ] tk8.5で見た目が綺麗になったんで、ようやく使い始めようと思ったのだが・・・
565 名前:デフォルトの名無しさん [2008/02/11(月) 02:39:47 ] 結論 Javaで池
566 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 02:42:35 ] じゃあJRubyで
567 名前:デフォルトの名無しさん [2008/02/11(月) 05:53:08 ] >>566 !否… JaRubyで… r
568 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 10:49:38 ] NUM2INTとかだけじゃなくてpackにあるnum2i32を表に出せばいいのに
569 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 16:12:22 ] >>556 >>560 >>563 つPython
570 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 00:28:51 ] 今後のバージョンアップでどうなるかわからないという話なら CだろうがJavaだろうがPythonだろうが同じじゃね 一番安全なのはバージョンアップしないことだろ
571 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 01:08:21 ] Cを混ぜるなw
572 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 05:11:17 ] ようやくPathnameにダメ出しする人があらわれたか
573 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 05:45:02 ] >>571 確かに、「いずれ死ぬという話なら末期癌の老人も健康な子供も同じ」みたいな。
574 名前:デフォルトの名無しさん [2008/02/12(火) 15:10:43 ] 古いのを永久に使えるという意味でCは特別な存在。
575 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 15:38:12 ] 孫にあげるのはもちろんヴェルタースオリジナル。 なぜなら・・・
576 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:12:23 ] 孫もまた特別な存在だからですハァハァ
577 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:15:30 ] 特殊な存在ktkr
578 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 17:02:07 ] ショタ☆ジジ
579 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:35:47 ] C99コンパイラでもちゃんとコンパイルできることに感動 でも、 g++だとやっぱダメだね。mallocとかの型チェック関係だけかと思ったら 可変長引数関数ポインタのプロトタイプでエラーでるわ。規格だと少なくとも1つは 固定引数にしないといけないんだから今のANYARGSを...に置き換えるだけ じゃ意味ないと思うんだけどなあ。その辺考えてないのかな。
580 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:39:58 ] いきなりで何の話かわからんのだが、とりあえずその環境でコンパイルできるコンパイラがあるんならいいんじゃね? 正直バイナリになってしまえば皆同じ?
581 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:45:28 ] C++でコンパイルでできたほうがなんか型安全っぽいじゃない 最近のゲームプログラミングとかもg++でCのコードをコンパイルするんだって。
582 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:27:01 ] 「っぽい」とかいう適当な理由を出されても。
583 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 01:01:54 ] 本体がC++である必要がなくってもライブラリ、 ミドルウェア側の都合でC++のランタイムが必要なわけで、 Rubyも将来的には是非C++でコンパイルを。
584 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 01:06:39 ] そりゃ作者が引退するまで無理だろw
585 名前:デフォルトの名無しさん [2008/02/13(水) 01:10:51 ] C++なぞ問題外.^^;;;
586 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 01:49:38 ] Rubyには直接関係ないけど、最近のruby-list@bladeはUTFメールの 文字コード判定に失敗してウェブから読めない投稿が多いなあ。 あと、namazu検索が止まってるのも問題。インフラだからもうすこし しっかりしてほしいよ。
587 名前:デフォルトの名無しさん [2008/02/13(水) 03:24:48 ] Rubyistってロリコンなの?? [Domain Name] WOTA.JP [登録者名] 西 和則 [Registrant] Kazunori Nishi [Email] anna@nacci.org [Email] liaison@do-reg.jp whois.jprs.jp/cgi-bin/whois_gw?key=wota.jp www.google.co.jp/search?q=site%3Awota.jp 2ch.wota.jp/ wota.jp:9090/ wota.jp:9090/image/show/67874 wota.jp/ac/ Ruby on Rails入門―優しいRailsの育て方 (単行本) 西 和則 (著) www.amazon.co.jp/Ruby-Rails%E5%85%A5%E9%96%80%E2%80%95%E5%84%AA%E3%81%97%E3%81%84Rails%E3%81%AE%E8%82%B2%E3%81%A6%E6%96%B9-%E8%A5%BF-%E5%92%8C%E5%89%87/dp/4798013951
588 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 03:34:50 ] Rubyはエロ画像収集言語です
589 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 03:35:02 ] ><;
590 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 03:39:36 ] >>587 つか、Rubyにかぎらんような。 JPEG2000のSusieプラグインの人とかはショタコンだし。
591 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 03:50:29 ] これは痛すぎるぜ
592 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 03:59:01 ] perl の人はアニオタじゃなかったけ?
593 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 06:38:37 ] >>592 > perl の人はアニオタじゃなかったけ? 昔はラムちゃんTシャツとかで有名だった。 最近は、 ttp://gihyo.jp/dev/serial/01/alpha-geek/0000 より あずまんがらしい。 > 弾:最近お気に入りのアニメは? > ラ:《あずまんが大王! ちよちゃん大好き!》(ちよちゃんの歌「つくりましょう!」を歌い出す) マクロスネタも通じる。 > ラ:文化,でしょうか。どれだけ優れたソフトウェアでも,文化を持たないものは普及しません。《プロトカルチャ〜(※5)》 > 弾:ヤックデカルチャ!(※5) オタクが嫌ならPerlもやめといたほうがいいね。
594 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 07:20:00 ] URI::Genericに、 alias to_str to_s がないって報告して
595 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 07:20:31 ] >>593 >オタクが嫌ならPerlもやめといたほうがいいね。 Rubyも駄目だろwww
596 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 07:38:36 ] 世間ではプログラミングがそもそもオタク行為だから、 その中で今さらなことを気にしてもしょうがないよ。