トップページtech
1001コメント374KB

Ruby 初心者スレッド Part 40

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/12/11(土) 15:46:15
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

★注意★ Ruby 1.9.2 は初心者には若干時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
 文字エンコーディング等の外部基礎知識が必要な上、不完全対応の第三者ライブラリでの問題の切り分けが手間です。
 迷う点の少ない1.8.7に習熟→おもむろに1.9.2の変更点のみ重点学習、とすればスムーズに移行できるでしょう。

関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。

■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
 ・エラーメッセージの共通そうな部分やエラーの出るモジュール名でググる
 ・マニュアルで引っかかったクラスの記述を探す http://www.ruby-lang.org/ja/man/
 ・FAQを一応読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
 ・エラーメッセージ(自力で訳さずなるべくそのままで)
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
回答してくれた人には「ありがとう」のひとことをいってあげて。

■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0083デフォルトの名無しさん2010/12/14(火) 18:03:40
第三の選択肢は↓
0084デフォルトの名無しさん2010/12/14(火) 18:10:40
中途半端な知識でAJAXなんて脆弱性垂れ流すに決まってる ちょっと考え直した方がいい
0085子羊2010/12/14(火) 19:01:23
>>82
「1.」の一択でお願いします。早速学習を始めます。
いちおう Apache はローカルにインストールしてますが、Apache に関する知識は皆無です。
環境が Windows でブラウザで
http://コンピュータ名/htdocsフォルダに置いてあるファイル名」という
アドレスにアクセスすることでそのサイトにアクセスできる状態にしています。
それで参考にお聞きしておきたいのですが、
「クエリ文字列とPOSTの内容と〜〜動作するところまで頑張る」という部分は
CGI モジュールについて学習すれば理解・実現できる内容ですか?
それとも Apache に関する書籍なども購入して学習する必要がありますか?

ほんとうにありがとうございます、救われた思いです。
とりあえず CGI モジュールについて学習します。一生懸命頑張ります。
0086デフォルトの名無しさん2010/12/14(火) 19:33:19
Ruby案件可ってことにして受注しちゃったのか?
0087デフォルトの名無しさん2010/12/14(火) 19:53:41
>>86
ていうかプログラミングに対する知識と経験が絶望的に足りないと思われ
「ふつう」の知識と経験があるなら>>75の場所では詰まらないと思うの
Ajax とは、みたいな説明や適当な Ajax の解説やサンプルを読んである程度理解したなら
Ajax として目新しいところとそうでないところの判断くらいはついて欲しい

つまりはこの人「何も作ったことがない」んだと思うよ
運転経験ない人に長距離夜行トラックでの運送なんて任せられるかw
素直に単純な CGI とかの日曜の自家用車ドライブからはじめろw
0088デフォルトの名無しさん2010/12/14(火) 19:55:26
HTMLの勉強をする
CGIの勉強をする(Rubyで)
HTTPの勉強をする
JavaScriptの勉強をする
Ajaxの勉強をする(Rubyで)

こんな順番?
0089デフォルトの名無しさん2010/12/14(火) 20:01:38
HTML の勉強をする
CGI 無関係な Ruby の勉強をする
Apache の基本的な使い方を学ぶ
CGI の勉強をする(Ruby で)
HTTP の勉強をする
JavaScript の勉強をする
Ajax の勉強をする(Ruby で)

こうだろ
…なんかめんどくさいな、どうせ表示するデータの取り扱いでも挫折するんだろうし、最初から Rails にするか
なんか、動作が遅いですとか言われそうな気もするが
でも、Rails が本番サーバで動作するかどうかのチェックも要るな
安価なレンタルサーバだとまともに動かなかったりするし
0090デフォルトの名無しさん2010/12/14(火) 20:45:55
なんか悲しい流れになってきたな。しゃあない面も大きいとは言え…。
0091デフォルトの名無しさん2010/12/14(火) 20:45:57
よその会社に丸投げで発注したほうがいいと思う
0092デフォルトの名無しさん2010/12/14(火) 20:50:42
>>89
HTMLに関しては何がわかってないの?この人
0093デフォルトの名無しさん2010/12/14(火) 20:53:32
そこそこに「わかってる」なら適宜飛ばしていいだろそりゃ
単に要素を列記しただけだと思うぞ

>>90
そもそも「カンタンにWebアプリを作成!」というのが幻想というか妄想なので…
情報商材みたいなもん
0094デフォルトの名無しさん2010/12/14(火) 21:07:51
というか質問は
* クエリ文字列の取得
* XMLHttpRequest#responseTextの取得
これだけなのになんでここまで盛り上がれるのん

後者はRuby関係ないからスルーとして
前者はcgi.params, cgi.query_string, ENV['QUERY_STRING']
その他フレームワークの類似機能を使用する、で終了じゃない
0095デフォルトの名無しさん2010/12/14(火) 21:13:34
悲しげなフレーバーを嗅ぎ取ったから
0096デフォルトの名無しさん2010/12/14(火) 22:10:21
>>75
ほかの人のアドバイスと被る部分もあるが

まずは、Rubyで簡単なCGIスクリプトを作るといい
内容はHelloWorldレベル(簡単なメッセージ表示くらい)で十分だ
作り方は検索したらいくらでも出てくるし、>>94のアドバイスも参考になる

ブラウザ上からそのCGIスクリプトにアクセスして、画面表示ができたら
AjaxでそのCGIスクリプトにアクセスして
CGIの出力を持ってくる(JavaScript側で出力を受け取る)ところまでやる

ここまでできれば、後は応用でなんとかなると思う
0097デフォルトの名無しさん2010/12/14(火) 23:47:25
どう考えても仕事じゃないだろ
あとrails勉強した方が結果的には最短距離かと
0098デフォルトの名無しさん2010/12/15(水) 00:40:41
Rubyやってる人が最短でできるのがrailsってイメージが自分はあったけど、
最近(っても古いか)の騒ぎ立てでRails使わないのにRubyやってんの?ってのが嫌。
0099デフォルトの名無しさん2010/12/15(水) 01:08:38
Railsを使わないRubyのWebアプリってやっぱイマイチなの?
CGI部分もあまり出来が良くないって聞くよね
素直にPHPでやったほうがいいのかな
0100デフォルトの名無しさん2010/12/15(水) 01:11:32
cgi.rb使うぐらいならsinatra使った方がいいよ
と話をややこしくしてみる
0101デフォルトの名無しさん2010/12/15(水) 01:42:53
>>99
Rubyで書けます

これがメリットだと感じないならRubyでWebアプリケーション作るのやめたほうがよい
いやかなりマジで
0102デフォルトの名無しさん2010/12/15(水) 01:44:35
>>75 >>82
にはSinatraに一票入れたいところだが、次に>>75

 レンタルサーバーでSinatraが動きません
 (もしくはめちゃめちゃ遅いです、使い物になりません)

と言ってくるので、cgi.rbでよいと思う。
01031022010/12/15(水) 01:47:30
>>101
池上「いい提案ですね」
0104デフォルトの名無しさん2010/12/15(水) 02:25:23
前スレでirbで落ちると言っている人いたよね?
rbreadline.rbを使っているRuby使っている人かもしれない。

readlineがライセンスの問題があるためRubyでreadlineを実装しようとしているもののようだけど、
Windowsでは日本語が入力できなかったり、行を編集しようとすると遅かったりどうにかすると落ちたりするなこれは

pikでRuby 1.9を入れるとrbreadlineが標準添付されたRubyが入るのだが、これだと実質irbが使えないな

0105デフォルトの名無しさん2010/12/15(水) 03:00:26
ActiveScriptRubyのバージョンを1.8.7から1.9.2に上げたら、
irb上で上下カーソルの入力履歴がでなくなりました。
これないとめっちゃ不便なんだけど、どしたらよいの?
0106デフォルトの名無しさん2010/12/15(水) 03:09:47
rlwrapを入れる
0107デフォルトの名無しさん2010/12/15(水) 06:17:24
>>106
あなたが神か?
0108デフォルトの名無しさん2010/12/15(水) 08:20:47
>>106
ありがとうございます。
これは大変良さげなのですが、Windows用バイナリは何処に?
cygwin入れてコンパイルするしかないかな。
0109デフォルトの名無しさん2010/12/15(水) 08:23:53
Sinatraってデプロイとか簡単?
0110デフォルトの名無しさん2010/12/15(水) 09:53:19
>>108
ttp://www.cymric.jp/maxima/maxima-winxp.html
のサイトでこっそりと
cygwin-rlwrap-0.30.zip
っていうファイルがあるみたい
0111デフォルトの名無しさん2010/12/15(水) 10:25:33
>>109
デプロイだけならHerokuは簡単
ただし動作環境にクセがある。
動作環境が満たされるなら遊びのちょっとしたものなら無料の範囲で作れるし、
そうでないなら金払えるなら、サーバー管理の手間かからないしいいんじゃね?

Google App Engineもデプロイだけは簡単だけど死ぬ

VPSでの動作ならRails並に簡単、いつもの慣れた環境をつくってデプロイできる。


え?・・・このレスに有益な情報がないって?
0112デフォルトの名無しさん2010/12/15(水) 10:52:13
>>75です。
みなさん、たくさんの親切なアドバイス、ほんとうにありがとうございます。
みなさまからいただいたアドバイスを参考に学習・開発を進めてまいります。

>>87
おおむね、おっしゃるとおりでございます。
Web アプリケーションの作成は今回が初めてでわからないことだらけです。
>>96 も仰ってあったとおりまずは素直に単純なところから始めようと思います。
ご親切にありがとうございます。

>>88 >>89
参考になります。>>93 のおっしゃるとおり、
その中からわかってない部分を適宜拾い集めて学習させていただきます。
ありがとうございます。

>>94
ありがとうございます。
お陰さまで何とかなりそうな気がしてきました。
参考にして調べてみます。

>>96
まず単純なことから試してみます。
基本ですよね、視野が狭くなって忘れていました。
親切なアドバイスが身にしみました、ありがとうございます。
0113デフォルトの名無しさん2010/12/15(水) 12:58:49
さくらVPSとかカゴヤ・クラウド/VPSとは月1000円もしないんだからそっちで
0114デフォルトの名無しさん2010/12/15(水) 14:04:34
WPFでこのように”1行”で書いたコードを
Rubyならどうやって書くの?

<WebBrowser Source="http:..."/>
0115デフォルトの名無しさん2010/12/15(水) 14:11:50
>>114
重複
ttp://hibari.2ch.net/test/read.cgi/tech/1287623173/882
0116デフォルトの名無しさん2010/12/15(水) 14:13:24
重複だからどうなんだ?
回答がないし、スレ落ちてるから質問しているんだが
それがだめな理由でもあるのか?
0117デフォルトの名無しさん2010/12/15(水) 14:20:13
C#は知っててもWPF知ってる人がいないから回答がこないんじゃね
あきらめれ
0118デフォルトの名無しさん2010/12/15(水) 14:23:52
ていうか処理層違ってどうにもならんし話も膨らまんからガチスルーされたのだろ
回路図示して、Rubyで炊飯器のタイマー起動するにはどうすればいいですかみたいな話に近い
0119デフォルトの名無しさん2010/12/15(水) 14:25:14
なかなかうまいことを言う
0120デフォルトの名無しさん2010/12/15(水) 14:26:57
WPFで1行でできることがRUBYだとできないの?
WEBに強いんでしょ?
0121デフォルトの名無しさん2010/12/15(水) 14:48:43
そんなこと言われましてもIEがWPF/XBAPを解釈して実行しているものをどうしろと
0122デフォルトの名無しさん2010/12/15(水) 14:50:11
PHPのほうがよりWEBに強いと思いますのでPHPの人に同じように質問して、
嫌われるといいと思います。
0123デフォルトの名無しさん2010/12/15(水) 14:57:58
WPF + MSBuild + Silverlight vs. Chrome OS + Native Client + Go

世田谷区民会館ぐらいなら埋まりそうなカードだな
0124デフォルトの名無しさん2010/12/15(水) 15:19:59
>>120
勝手にWEBに強いことにしないで欲しいな。
0125デフォルトの名無しさん2010/12/15(水) 15:26:28
じゃあもっと簡単なところで

<Button/>

たったこの1行でボタンが配置できますが
Rubyだとどうするんですか?
0126デフォルトの名無しさん2010/12/15(水) 15:30:38
>>125
InternetExplorerが公式にRubyをサポートしてからまたおいで
あなたはクライアントとサーバサイドの区別がついていない
0127デフォルトの名無しさん2010/12/15(水) 15:32:22
バカは放置すべき
0128デフォルトの名無しさん2010/12/15(水) 15:33:31
幼稚園児の屁理屈みたいで
見てて微笑ましかったのだが
0129デフォルトの名無しさん2010/12/15(水) 15:33:59
>>125
再現してみるからLinuxで動くコードちょうだい
0130デフォルトの名無しさん2010/12/15(水) 16:04:08
前スレから出没してるアレな人でしょ
どうにかしてRubyを馬鹿にして悦に浸って苦しい日常生活から現実逃避したい低レベルなプログラマさん
kill myselfをお勧めします
0131デフォルトの名無しさん2010/12/15(水) 16:17:37
バカは放置すべき
0132デフォルトの名無しさん2010/12/15(水) 16:22:48
コードで示せないあなたたちがバカではなくて?
0133デフォルトの名無しさん2010/12/15(水) 16:25:36
しかしみんな構っちゃうw
0134デフォルトの名無しさん2010/12/15(水) 16:53:00
Rubyなら
print "<Button/>"
でいいんじゃないの?
0135デフォルトの名無しさん2010/12/15(水) 17:51:21
>>134
>>125はおそらくHTMLじゃないぞ
0136デフォルトの名無しさん2010/12/15(水) 18:03:48
XAMLだね
静的にコンパイルするとb = Button.newみたいなコードが得られる
動的にロードするのならIronRubyでも出きるだろう
0137デフォルトの名無しさん2010/12/15(水) 18:15:33
>>132
kill myself
0138デフォルトの名無しさん2010/12/15(水) 18:24:41
こんな動作をRubyで一行でできる?
Array.ForEach(files,f=>Console.WriteLine(f));
0139デフォルトの名無しさん2010/12/15(水) 18:27:01
できるって言ったらなんなんだろうね
できてないって言って追っ払っちゃおうか
面倒だし
0140デフォルトの名無しさん2010/12/15(水) 18:28:10
やめろおいそれはRubyの得意分野だ
0141デフォルトの名無しさん2010/12/15(水) 18:29:11
>>138
できません
あなたの勝ちです

では他の人次の質問どうぞ
0142デフォルトの名無しさん2010/12/15(水) 18:55:17
そういや、Ruby1.9.1 系統の open-uri は open の引数に文字エンコーディング情報をくっつけると
その値に force_encoding して返してくれるぞ、という話を前スレでしようと思ってたらスレが終わってた

irb1.9> p open("http://www.2ch.net/").read.encoding
#<Encoding:ASCII-8BIT>
irb1.9> p open("http://www.2ch.net/", 'r:Windows-31J').read.encoding
#<Encoding:Windows-31J>
0143デフォルトの名無しさん2010/12/15(水) 19:04:19
force_encodingはエンコード情報だけを強引に書き換えるメソッドなのだが
0144デフォルトの名無しさん2010/12/15(水) 19:19:14
>>143はたぶんわかってない
0145デフォルトの名無しさん2010/12/15(水) 19:28:54
中身が EUC で、force_encoding 'UTF-8' しただけじゃまずいわな。
0146デフォルトの名無しさん2010/12/15(水) 19:45:19
そもそも前スレでどんな話してたかを知らないと頓珍漢なレスに

> それは Net::HTTP の仕事ではないというかそんな根底部分で余計なことすんなということらしい
> open-uri ならヘッダの Content-Type を読んで force_encoding で設定してくれるが、
>
> irb1.9> require 'open-uri'
> irb1.9> p open("http://dailynews.yahoo.co.jp/").read.encoding
> #<Encoding:EUC-JP>
> irb1.9> p open("http://sankei.jp.msn.com/").read.encoding
> #<Encoding:Shift_JIS>
> irb1.9> p RUBY_VERSION
> "1.9.2"
>
> レスポンスヘッダの Content-Type ほど信用ならないものもないのでまあ掛け捨て保険程度
0147デフォルトの名無しさん2010/12/15(水) 20:00:13
2次元の範囲ってどう指定してますか。
例えば2次元画像の特定の領域(x,y,width,height)を指定するのに
こう書くのは問題ですか。他にもっといい書き方があれば教えてください。
image.pixels[x,y,width,height] = pixels
0148デフォルトの名無しさん2010/12/15(水) 20:10:43
image.pixels[x1,y1,x2,y2] = pixels

そんな書き方してたら座標変換するとき面倒だろ
0149デフォルトの名無しさん2010/12/15(水) 20:17:16
>>148
あ、いやそれは問題にしてなくて例えば
pixels[x..x+width, y..y+height]
pixels[[x,y], [width,height]]
pixels[x,y][width,height]
みたいな書き方の方が良いのかなという話です。誤解させてすみません
0150デフォルトの名無しさん2010/12/15(水) 20:19:20
何でpixelの中にpixelsを格納するのか意味不明
colorならわかるが
0151デフォルトの名無しさん2010/12/15(水) 20:58:50
image内の矩形領域に別の矩形領域pixelsをコピーしてるんじゃないか?
0152デフォルトの名無しさん2010/12/15(水) 21:57:32
>>146
うん、Content-Type ヘッダの charset を ASCII-8BIT の代わりにセットする代わりに
引数指定の文字エンコーディング名をセットするようにできます、という話だよね
0153デフォルトの名無しさん2010/12/15(水) 23:04:09
>>151
あのコードがそのように解釈できるのか?

どうみても、1pixelに複数pixelを割り当てているようにしか見えないが

CopyRect(Rect srcImage,Rect destImage)

とかにすべきだろ
0154デフォルトの名無しさん2010/12/15(水) 23:17:45
image.pixels[x,y,width,height] = pixels
左辺は範囲じゃん
ary[start,length] = ary2の二次元版
0155デフォルトの名無しさん2010/12/15(水) 23:51:03
ぐぬぬ…
0156デフォルトの名無しさん2010/12/16(木) 00:06:45
でもstart, lengthはともかく4つ使ってstart(x), start(y), length(x), length(y)は一般的かな?
0157デフォルトの名無しさん2010/12/16(木) 00:15:29
一般的だろ
0158デフォルトの名無しさん2010/12/16(木) 01:13:15
気持ち悪い言語だなぁ
0159デフォルトの名無しさん2010/12/16(木) 01:54:13
>>145
この場合はforce_encodingが正しい
0160デフォルトの名無しさん2010/12/16(木) 08:09:45
Encoding が BINARY なものに force_encoding で「名前をつける」ことの何が非難対象なのかがわからないな

Encoding は nil が許されないから、必ず何らかの名前がついている
文字エンコーディングを特定できない、または特定しないという印が ASCII-8BIT こと BINARY
ネット経由のファイル取得でエンコーディングを特定できる情報がないから ASCII-8BIT だったものに
force_encoding を使って人間が知ってる情報で名づけてあげることの何がまずいというのか
0161デフォルトの名無しさん2010/12/16(木) 11:39:38
>>75 です。
時間はかかりましたが、やりたかったことができました。
余計かな、とは思いましたがみなさんのご協力がなければ
間違いなく先に進めていなかったので、ご報告させていただきます。

本当に助かりました。ありがとうございました。
0162デフォルトの名無しさん2010/12/16(木) 11:42:38
3Dゲームを作りたいのですが
どうすればできますか?
0163デフォルトの名無しさん2010/12/16(木) 12:27:00
スルー推奨
0164デフォルトの名無しさん2010/12/16(木) 12:39:54
>>162
そういう話題ならマジレスするぜ。
ウィンドウ作成とキー入力、サウンドはqtrubyを使うのが一番簡単。
あとはOpenGLを使ってごりごり書く。
3Dシューティングゲームならこれで作れる(実際に作った)。
ただしそこからPS2レベルのゲームを作るにはかなり努力しないといけない。
表示だけ考えても、そこからモデルのロードとスキニング、アニメーションを自前で実装する必要がある。
これらを実装するのはそれなりに知識と時間が必要。
なので今ちょうどそれらを全部含んだM3Gという携帯電話で使われている3D描画APIを実装して
Rubyから使えるようにしている作業の真っ最中。
もう動いてるけど、さすがにまったく知識のない人間には勧められる完成度はない。
とりあえずOpenGLを使って簡単なゲームを作ってみるべし。
ちなみにモデルビュアーのスクリーンショット。これが100%Rubyで書かれている。
この画像ではわからないけどちゃんとアニメーションしている。
http://www.gazo.cc/up/21983.png




0165デフォルトの名無しさん2010/12/16(木) 12:47:44
スルー推奨
0166デフォルトの名無しさん2010/12/16(木) 12:48:36
http://www.nicovideo.jp/watch/sm5630363
0167デフォルトの名無しさん2010/12/17(金) 09:34:26
>>164
おい、スルーし・・・
ちょw

特定しますた


しかし3Dゲーム作るなら、ゲームエンジンのバインディング作ったほ(ry

0168デフォルトの名無しさん2010/12/17(金) 09:41:30
>>164
のぞかせてもらった。

M3GのAPIの互換実装をつくって、別にRubyのバインディングを作ってるのか。
M3Gって需要あるんかいな
0169デフォルトの名無しさん2010/12/17(金) 10:48:18
3DゲーなのにDirectX使わないの?しょぼ
0170デフォルトの名無しさん2010/12/17(金) 11:04:06
>>169
ではWindowsを移植してください
0171デフォルトの名無しさん2010/12/17(金) 12:14:27
rubysdl + OpenGL のサンプル試してみたけど
PSレベルのものは作れそうだ
0172デフォルトの名無しさん2010/12/17(金) 12:19:04
Rubyのブロックってもしかして、
「公開関数が2つ以上関数を引数にとるなんてことめったにねぇよ」
って発想が根底にある?
0173デフォルトの名無しさん2010/12/17(金) 12:21:19
×公開関数
○高階関数
0174デフォルトの名無しさん2010/12/17(金) 12:33:08
>>172
たしかそんなような話は聞いたことがある
0175デフォルトの名無しさん2010/12/17(金) 12:58:09
>>172-174
MLかどっかのログくれ!!


俺もブロック見たときびっくりした。何で1個なんだよって。
でも意外にif else end (ブロック2つみたいなもの)のようなものを作ることがなくて困らない、
というかそういう作り方になってしまう。

どうしてもやりたければlambdaでいい。
1個の場合は楽。バランスなのかも
0176デフォルトの名無しさん2010/12/17(金) 13:02:28
本人が「失敗だった、高階関数を一つ限定にしたのが自分の限界」
みたいなことを言ってた記事を見たことあるが、
なんでもかんでも未来を見通せるわけじゃない。
高階関数を組み入れただけでもすばらしいよ。
0177デフォルトの名無しさん2010/12/17(金) 13:20:52
関係はこれかなあ
ttp://www.rubyist.net/~matz/20070512.html#p04
> 高階関数を持つ言語(OCaml)のライブラリを精査したところ、
> 2239関数のうち、関数引数を取らないものが87.2%、ひとつだけ取るものが12.1%で、ふたつ以上とるものは0.7%であった。
> ここからわかることは、プログラミング言語は 99.3%を占める高階関数(ブロック)を0または1個とるものに最適化するべきであり、
> めったにない二つ以上ブロックのために、それ以外のものを「ゆがめて」はいけない、ということ。

ttp://itpro.nikkeibp.co.jp/article/COLUMN/20050930/221979/
> もちろん,メソッド呼び出しに1つだけしかブロックを付けられないという制約はあります。
> しかし,実際に複数のブロックが必要になることはほとんどありません。

Ocamlの論文はけっこう引用されてて、
「実利を取って引数1個限定でシンプルにしてたRubyは勘がよい」という評価がいくつかあったはず
0178デフォルトの名無しさん2010/12/17(金) 13:30:39
初心者スレだったな

Rubyだとたとえば「ブロックが1個限定なのってよく考えたら変じゃね?」という話
def foo(arg1, arg2, &block)
end
と定義して
foo(111,222){|x| ... }
と利用するわけだけど、これって
def foo(arg1, arg2, &block1, &block2)
end
と定義して、現行のRuby文法上ではうまく書けないんだがなんか
foo(111,222){|x| ... }{|y| ... }
みたいに複数ブロック実行できるようにしたとしても別にデメリットはないんじゃね、
複数引数自体は自然だし、いざという時用に用意しててもよくね? という話
0179デフォルトの名無しさん2010/12/17(金) 13:59:13
>>178
でたでた、良くある初心者ならこれくらいなら理解できるだろうという上から目線。
そもそも高階関数そのものがわからないのに解説して貰ってもねぇ-
0180デフォルトの名無しさん2010/12/17(金) 14:02:03
高階関数
defで設定した関数の中で関数を呼ぶもの。
これが1個
def f(g,a)
g.call(g.call(a))
end

これが2個
def f(g,a)
g.call(g.call(g.call(a)))
end
0181デフォルトの名無しさん2010/12/17(金) 14:12:49
高階関数とはなにか
Rubyで高階関数を実現するには
lambda, Procとブロックの関係

>>176の真偽も含めて
今日のRuby初心者スレは盛りだくさんだな
0182デフォルトの名無しさん2010/12/17(金) 14:22:48
時間帯まとめてレスがつくのが興味深い
まるで一人で書いているかのようだ
■ このスレッドは過去ログ倉庫に格納されています