- 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-
- 321 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:16:04 ]
- Ruby < 信じれば救われる!
- 322 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:19:07 ]
- もっといい言語が他にいくらでもある。
- 323 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:20:29 ]
- そのときその瞬間にロクでもないアンチか信者が常駐状態だった、
という悲劇はわりとよくある話。
- 324 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:21:11 ]
- >>309
String は別に Object に似せようとはしていないが StringIO は IO に似せようとしている、という大前提が違う
- 325 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:24:58 ]
- それはstringがいらないという主張であるが、結局の所、
stringなんて名前にするくらいならto_sでいいじゃんってことになる
- 326 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:29:24 ]
- >>325
日本語でおk
- 327 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:30:56 ]
- IOに似せる→stringなんてメソッドいらない
string気持ち悪い→to_sでいいじゃん
- 328 名前:デフォルトの名無しさん [2008/02/03(日) 17:41:12 ]
- >>308
>Webに使うcgiは重厚でも安全な設計にすべきだと思うが? 安全かつ、簡単なことは簡単にできる設計がベストだろ。 だからこそ、multipartのときはただの文字列で、 multipartの時はIOのようなものが来るようになってる。 要するに、multipartを使う奴は面倒を押しつけてるんだよ。
- 329 名前:デフォルトの名無しさん [2008/02/03(日) 17:42:34 ]
- 訂正>>328
×multipartのときはただの文字列で、 ○multipartじゃないときはただの文字列で、
- 330 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:47:04 ]
- >>327
>IOに似せる→stringなんてメソッドいらない あってもいいだろ。File#pathみたいなもんだ。 >string気持ち悪い→to_sでいいじゃん 俺の感覚ではto_sのがキモイ。勝手に型変換すんな。
- 331 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:51:58 ]
- >勝手に型変換すんな。
いや、したくてするんだがw
- 332 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:02:16 ]
- p StringIO.new("abcd") #=> "abcd"
なんてキモすぎだろ。常考
- 333 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:04:49 ]
- それはpやputsがto_sを呼んでるだけなのでは…
- 334 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:06:11 ]
- 誰がそんなことを望んでるの?
- 335 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:06:36 ]
- cgi.rb は多少手を入れた程度じゃどうしようもないし、
大きく手を入れるんだったらパッチをつけないと議論できないからなぁ。
- 336 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:07:34 ]
- 木を見て森を見ず vs. 森を見て木を見ず
- 337 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:08:01 ]
- >>332
どうしてもやるならStringIO#inspectも定義すべきだね >>333 to_sはそういう風に使われるものだから下手に定義するなってことだろう
- 338 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:09:03 ]
- inspect定義しちゃいけないのかw
- 339 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:14:35 ]
- >>331
してほしくない人もいるってことだ。 お前は "foo" + 1 を勝手に "foo1" にして欲しい派? もしそうならお前は今の Ruby に向いてない。
- 340 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:20:14 ]
- ところで、cgi.rbがらみでStringIO#to_sを主張するやつは
なぜTempfile#to_sの方は主張しないの?
- 341 名前:デフォルトの名無しさん [2008/02/03(日) 18:25:24 ]
- 「勝手に型変換」はto_strじゃないのか
- 342 名前:202 mailto:sage [2008/02/03(日) 18:38:19 ]
- >340
リファレンス見ると StringIO: IO と同じインタフェースを持った文字列クラスです。 --> 本質は文字列クラス IO: IO クラスは基本的な入出力機能を実装します。 --> 本当は文字列関係ありません。(なぜかIO#readで文字列を吐き出せるけど) だけど? まあ、おいらとしてはcgiクソという結論なんであんまり興味なくなったというのが本音。
- 343 名前:202 mailto:sage [2008/02/03(日) 18:42:12 ]
- >333
pが呼んでいるのはinspectだと思う。 putsとprintはto_sだね。
- 344 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 19:02:17 ]
- >>342
>StringIO: IO と同じインタフェースを持った文字列クラスです。 これはマニュアルが間違いだな。 文字列クラスだとしたら、+だのgsubだの何もかもが足りない。 あと、英語ではちゃんと "Pseudo I/O on String object" になってる。 >IO: IO クラスは基本的な入出力機能を実装します。 > --> 本当は文字列関係ありません。(なぜかIO#readで文字列を吐き出せるけど) これはさすがにいちゃもんだ。IOは文字列の入出力機能を提供するものだよ。
- 345 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 20:07:01 ]
- >344
>これはマニュアルが間違いだな。 あいかわらずリファレンスは酷い、つうことか。 >これはさすがにいちゃもんだ。IOは文字列の入出力機能を提供するものだよ。 いや、IOて文字列よりももうちょっと抽象化の進んだものじゃね? あくまでストリームなんだから、中身は何でも良いはずだよ。 文字列として成立しないバイナリも処理できる訳だし。 #Windowsだとbinmodeを設定する必要あるけど。
- 346 名前:344 mailto:sage [2008/02/03(日) 20:32:53 ]
- >>345
>あいかわらずリファレンスは酷い、つうことか。 まあでも、中を見ればStringIOがStringに似せようとしてないことくらい 普通はすぐわかるから、些細なことだとは思う。 仕様書じゃないんだから、厳密すぎる表現を使われても読みにくくなるしね。 >あくまでストリームなんだから、中身は何でも良いはずだよ。 入出力が文字列になるストリーム、という意味。 任意のオブジェクトを流せるストリームではないと。 文字列というか、Stringで表現できるもの、と言うべき?
- 347 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:37:37 ]
- ていうか、StringIOの基本コンセプトはシェルでいうところの
LIST=`ls` だろ 出力を変数に格納する処理
- 348 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:08:31 ]
- StringIO#string= を StringIO#to_s= にしろとな。
キモすぎるぞそれは
- 349 名前:162 mailto:sage [2008/02/03(日) 22:18:18 ]
- cgi.rb がクソと言うやつは、どのような設計ならば素晴しいか具体的に述べてくれ。
(いや、煽りじゃなくてな。MLあたりで提案しないと状況は動かんとは思うが、それをやれとは言わん) 最近本格的にperlから乗り換え始めたんで、CGI.pm のクソさ加減から劇的に改善されたことしか理解できないのよ。
- 350 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:22:34 ]
- >348
誰もそんなことを言っていないぞよ
- 351 名前:202 mailto:sage [2008/02/03(日) 22:25:51 ]
- >349
Webrickを見たけど、あっちの方がずいぶんまともな設計じゃない? 使ってないから何ともいえんけど。 でも、あれも更新止まっちまってる感じなんだよなぁ。
- 352 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:49:43 ]
- >>349
www.google.com/search?hl=ja&q=CGI.rb&lr=lang_ja&ie=UTF-8&oe=UTF-8&num=50
- 353 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:55:28 ]
- Webrick::CGIはちょっとしたCGIでよく使うけどいいよ。
WEBrick::HTTPResponse や WEBrick::HTTPRequest を見ないといけないうえに、 時々ソースまで見ないといけないのがネックだけれど。
- 354 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:56:31 ]
- ソースまで見ないといけないのはRuby全般に当てはまる
- 355 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:58:04 ]
- ネット関係のモジュールはソース見つつ作ると面白いことができるな
- 356 名前:デフォルトの名無しさん [2008/02/03(日) 23:00:02 ]
- WEBrickは読みやすいんだけどそれがドキュメントが無い原因の一つなのかも…
- 357 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:14:45 ]
- >>355
初心者スレで見たんだが require 'net/http' uri = URI.parse('www.2ch.net/') response = Net::HTTP.start(uri.host, uri.port){|http| http.head(uri.path) } p response.code_type == Net::HTTPOK p response.is_a?(Net::HTTPOK) これ両方ともtrueなんだよな Net::HTTPOK使うのなんて初めて見たぞ
- 358 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:19:22 ]
- def code_type
self.class end なんだな。
- 359 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:27:44 ]
- response.code == '200' という半マジックナンバーよりは見かけ健全だな
初心者スレでは response.code == 200 という比較をして動かないってハマってたが
- 360 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:33:43 ]
- >357
あと、typoをパーザーが見つけてくれるから、response.code == '200'より便利だよ。
- 361 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 12:34:05 ]
- >>357-358
それは、rdocにあるように、caseでチェックするため。 case response when Net::HTTPSuccess then response when Net::HTTPRedirection then fetch(response['location'], limit - 1) else response.error! end
- 362 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 15:07:30 ]
- >>356
どんなドキュメントが欲しい? リファレンスマニュアルとは別のものかな。
- 363 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 15:53:27 ]
- >>362
356じゃないが、チュートリアルというか、こういう時はこういう組み合わせでやれ、みたいな感じの物はほしいな。 るびまにproxy作る例があったけど、あんな感じで。
- 364 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 15:59:18 ]
- WEBrickでプロキシを作る例を読むのはもう飽きたお…
- 365 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 20:47:39 ]
- レシピブックじゃだめかね。
- 366 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 23:59:26 ]
- >>362
Webrickのクラスでセッション管理するドキュメント
- 367 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:29:45 ]
- >>366
ttp://www.ruby-lang.org/ja/man/html/webrick.html
- 368 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:34:36 ]
- Ramazeってよさそうだけど、あれ試してみた人いる?
- 369 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:52:18 ]
- >>368
最近できたフレームワークですね。 最小限の構成ながら、MVCで、 必須だろうセッション管理やキャッシュ機構もデフォでついてたり、 それでいて、HTTPDやテンプレートやORマッパがすげ替え可能だったり、 よさげではあるな・・・。 てか、OpenID対応とか時代を反映してますな。 Rails はでかいと思う人にはかなりよさげ。 ただ、Railsの次点は Merbだろうし、 使っている人はどれだけいるんだろうか
- 370 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 02:12:47 ]
- お前ら小さいのがいいならSinatraも忘れないでください。
Sinatra : Classy web-development dressed in a DSL sinatra.rubyforge.org/ セッション管理がねえ?そんなのカンk(ry
- 371 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 03:07:56 ]
- だからセッション管理が無いなら標準添付のWebrickでいいんだってば
- 372 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 03:12:04 ]
- cgi.rb 再構成案
cat > cgi.rb require 'webrick/cgi'
- 373 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 03:21:39 ]
- もう1.9.0を出しちゃった以上、インタフェイスレベルでの変更はやめたほうがいいんじゃないの。
デイブトーマスも「開発者は1.9でライブラリ書けよ」って言ってるぐらいだし。それよりはMLで やってるみたいに実装を高速なものに変更するとかがいい。あるいはCgiAltをcgi2って名前で 取り込むとかね。 でもね、それよりはドキュメントをですね、もうちょっと埋め込むとかなんとかして irbのhelpがpythonのhelp()並に情報がでるようにしてほしい。Pixaxe本の記述って ソースコードにコピーしちゃだめなのかな。
- 374 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 06:23:10 ]
- 1.9.0 はただの snapshot だし。
- 375 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 07:18:44 ]
- 俺は StringList が欲しかったが
StringIO がそれなりに望みの動作に近かったので使ってる 俺みたいな奴には to_s が自然なのかもな IO として使いたい奴には不自然かも知れん
- 376 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 08:32:16 ]
- >>367
doc.loveruby.net/refm/api/view/library/webrick
- 377 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 10:39:12 ]
- Rubyの公式MLでいい大人が2ちゃんねるの話題だすなよなー
ここは便所の落書きですぞ?暗黙的に提案すればいいのに。
- 378 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 13:51:14 ]
- 最近の「2ch観」は各人でかなり異なるから、一概には言えないよ。
皆、自分のよく読むもの・よく書くことを中心に2chを捉えてるわけだけど、最近はその内容に凄く個人差があるし、 ブログの影響もあって、今や2ch以外も匿名・暴言の山で、2chだけがどうのって感じではなくなってるしね。 別の板も含めた俺の経験では、「2chに関係することを2chの外で口にすること」について 問答無用で「何てイタイんだ!」みたいに反応する奴は、大抵同じIDで草生やしまくってたりする。 あと、基本的に中傷とかの濃度の濃い場所の住人ほど、そういう傾向がある。 たぶんこれは「鏡にどんな人間が映ってますか?」的な話題なんだろう。
- 379 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 13:55:33 ]
- >>377-378
気にしなくていいですよ 俺みたいな世代は、2chもネットの掲示板の一つだから 便所の落書きでも、情報源には違いないものです
- 380 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 13:56:49 ]
- ああ、あと、>>378の後半は余計だと思うがwその辺が2chたる所以かw
- 381 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:36:07 ]
- そういやもう2chが特別な場所である感覚はないね。
- 382 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:36:27 ]
- 2chが特別だったのはログとってなかった頃まで
- 383 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:39:49 ]
- お前ら何年いるんだ。
- 384 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:42:37 ]
- 7年くらいかな?
- 385 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 02:28:44 ]
- 4・5年くらいの人が今は一番多いんじゃね
- 386 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 02:58:54 ]
- >>367
WEBRick でのセッション管理はどこに書いてあるんだ?
- 387 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 10:27:35 ]
- >>386
「自分で書き加えろ」という遠回しなメッセージではないだろうか
- 388 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 10:39:57 ]
- そんなセッションな〜
という駄洒落を思いついた
- 389 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 10:40:39 ]
- shingichuu
- 390 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 12:16:16 ]
- 【判決】
Segmentation fault
- 391 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 13:08:43 ]
- その判決はなかったわ
- 392 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:10:18 ]
- マルチプラットフォームで輝き始める“Ruby”
www.itmedia.co.jp/enterprise/articles/0802/06/news007.html
- 393 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 17:44:23 ]
- 輝き始めるとは失礼だな。
今まで輝いてなかったみたいじゃないか。
- 394 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 17:53:49 ]
- 輝くどころか、各方言で骨肉の争いが
- 395 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 19:36:42 ]
- 輝き始めていると表現できるのは確かだが、
同じような紅い輝きがあちこちにあって統一性が感じられないのはなんでだぜ
- 396 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 19:43:32 ]
- 燃え尽きる直前の煌き
- 397 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:43:14 ]
- def [(key)]=(value); end
みたいに書きたい! def []=(value, *keys); end でもいいけど
- 398 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:01:40 ]
- 1.9ではrubyが無いとbuildできないのか?
baserubyを指定しろと怒られる。
- 399 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:26:30 ]
- >398
insns.defとかの処理でBASERUBYを使ってるね。 他のマシンで処理しておいて、それを持ってくるって方法もあるけど、 1.8も入れておいた方が無難だと思う。 なお、tarballだと処理したものが入れてあるんじゃないかな。
- 400 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 03:17:46 ]
- >>387
>「自分で書き加えろ」という遠回しなメッセージではないだろうか WEBrickにsession機能がないのに、ドキュメント書けるわけないだろアホ
- 401 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 03:33:06 ]
- そりゃ>>376が何も言わずにリンク先しめすもんだから、勘違いするじゃない
>>400みたいに言ってくれないと
- 402 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 09:43:14 ]
- いやWEBrick自体にセッション管理機能がないのは周知の上で、
自前でかっこよくセッション機能を組み入れる解説が欲しいのでは 実際問題としてWEBrickの目ぼしい弱点ってそこだけだし
- 403 名前:デフォルトの名無しさん [2008/02/07(木) 09:52:18 ]
- WEBrickのプロクシサーバって、アクセス先のデータを一回全部読み込んでるみたいだが、
ちょっとずつ読み込みながら返してくるようにしてほしい。
- 404 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 10:03:16 ]
- それはあまりRubyっぽい動作ではないな
RubyのIO系はメモリに一気に読み込んでから配列にしたりして1単位ずつ返したりするのが主流 Proxyっぽい動作ではないけどな
- 405 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 10:28:21 ]
- >>403
ああ、完全に同意。あの動作はクソすぎる。 >>404 メモリに一気に読み込むのを主流だとか馬鹿なことをいうのはやめてくれ。 IO#eachという一番わかりやすいメソッドを見てみろよ。
- 406 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 12:35:30 ]
- Net::HTTPResponse#read_body{|str| ...} は全部読み込んでから区切ってた気がする
- 407 名前:デフォルトの名無しさん [2008/02/07(木) 23:32:50 ]
- 煽りじゃなくて、Scheme(or Lisp)に有って、Rubyに無い機能ってある?
あるとしたら、その機能って必要?他の機能で代用可能? いろいろ細かいことも教えて。 (初心者スレから誘導されました。)
- 408 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 23:38:23 ]
- >>407
マクロ
- 409 名前:デフォルトの名無しさん [2008/02/07(木) 23:42:40 ]
- マクロはRubyの他の機能で代用可能ではないの?
あった方が便利?
- 410 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 23:46:19 ]
- >>409
何したいのか判らんけど代用可能かどうかの判断つかないんなら聞いても意味無くない?
- 411 名前:デフォルトの名無しさん [2008/02/07(木) 23:47:38 ]
- 代用可能ではないと判断した。けど、詳しい人なら代用方法を知っているかもしれない。だから聞いている。
- 412 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:22:18 ]
- >>402
CGI::Session の移植ならあね。 moonrock.jp/~don/ruby/#ID-WEBRICK
- 413 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:23:15 ]
- 代用というからには用途による。
あらゆる用途で同じように使えるなら、それはその機能そのものだ。
- 414 名前:デフォルトの名無しさん [2008/02/08(金) 00:25:30 ]
- こういう用途には代用になる、と言えばいい。
すべてを網羅しなくても思いつくだけ述べてくれて構わない。
- 415 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:30:04 ]
- Schemeのマクロは文法拡張ができる。
Rubyでは文法拡張する方法はない。 でいいの?
- 416 名前:デフォルトの名無しさん [2008/02/08(金) 00:38:31 ]
- >>415
それは、例えば新しいif文を定義して、標準のif文と同じように使うことができるようになる、ということ? それが、Schemeでは出来て、Rubyでは出来ないと。正しい?
- 417 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:40:22 ]
- eval系列の命令でマクロっぽいことはできる。
attr_reader, attr_accessorもそれ
- 418 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:43:27 ]
- >>416
可能だが、どこまで自然になればOKなのかは使う人によるからな・・・ Rubyでも DSLは作られるが、 例えば、brainfu*k を再現するのは無理だろう
- 419 名前:デフォルトの名無しさん [2008/02/08(金) 00:50:38 ]
- lispってlispのソース上でbrainfu*kを再現できるの?()は出てこないの?
インタプリタを作るならlispでもRubyでもできるよね。それとは違うの?
- 420 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:52:42 ]
- >>416
普通の関数なら関数を呼び出す時点で引数の評価は完了しているが、 マクロなら引数を評価するタイミングをマクロ側で制御できる。 ruby でオレオレif を作るなら、if/else の本体を Proc で包んで渡すしかない。 じゃないと オレオレif 関数を読んだ時点で if/else の本体が実行さてしまうから。 それか Proc のシンタックスシュガーであるブロックをうまく使ってごまかすか。 このサスペンダーの人の記事も参考に。 blog.livedoor.jp/dankogai/archives/50996734.html
- 421 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:52:43 ]
- >>418
my_if(proc { cond }, proc { then_clause }, proc { else_clause }) は「文法拡張した」とはさすがに言えないだろう
|

|