Ruby初心者スレッドPart5
■ このスレッドは過去ログ倉庫に格納されています
00011
2006/03/27(月) 04:59:25関連スレやURLは2以降。Ruby on Railsの質問はWebProg板のRailsスレで。
■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
・ぐぐる
・マニュアルで探す http://www.ruby-lang.org/ja/man/
・FAQを読む http://ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・エラーメッセージ(なるべくそのままで)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0153デフォルトの名無しさん
2006/03/29(水) 20:32:400154デフォルトの名無しさん
2006/03/29(水) 21:07:02> 「○○がない理由」はあくまで「○○がない理由」であり、
> それがどうして「Object#nil?やArray#firstがある理由」の補強になるのでしょうか。
それは、
否定する根拠が再反論によって消滅したため、
> いまのところ、すでに示された理由を否定する理由はありません。
となるからです。
あと、話が分からないときに比喩を使うのは、混乱の元ですからやめましょう。
> 「裏の裏は表」ということですか?今の場合は「右の右は後ろ」でしょう。
という文を、具体的な文にしましょう。
0155デフォルトの名無しさん
2006/03/29(水) 21:31:53ていうかそろそろ議論止めろ
0156デフォルトの名無しさん
2006/03/29(水) 21:43:530157デフォルトの名無しさん
2006/03/29(水) 21:57:03こんなよくわかんない空気かもしだしてたら、質問したくてもしにくくなるんじゃない?
0158デフォルトの名無しさん
2006/03/29(水) 22:06:220159デフォルトの名無しさん
2006/03/29(水) 22:29:46Arrayだろうとなんだろうと、それがnilであるか? とは考えるけど
Arrayがtrueかどうか? とは考えない、考え方の汎用性の違いによるものだと勝手に納得してた
0160デフォルトの名無しさん
2006/03/29(水) 22:30:130161108
2006/03/29(水) 22:31:31うむ。言葉足らずですまんかった。
なるほど、�dクス。併せて
CGI.unescapeElement(str, *elements)
がそれに相当するぽい。ドキュメント長いと見落としが…すまん。
>146
ちょ…俺?w
んまいいけど、47はなんでほぼ全レスなんだwww
神経質つか粘着だしwww適度というものを知れww
なにも頭から否定されてるわけでもあるまいwwなにをムキにw
0162デフォルトの名無しさん
2006/03/29(水) 22:41:10直接MLに投稿すれば一発で解決するものを、何だって遠回りな手段を選ぶのか、
その思考回路からして理解できない。
仕様がどうのという以前に、まずは正しい質問先を見極めることから勉強してき
て欲しいものだな。
0163デフォルトの名無しさん
2006/03/29(水) 23:14:36お前も粘着ウゼーんですけど。つか荒らすなボケ
0164デフォルトの名無しさん
2006/03/29(水) 23:18:37>直接MLに投稿すれば一発で解決するものを、何だって遠回りな手段を選ぶのか、
あれ?このスレ要らなくね?
0165デフォルトの名無しさん
2006/03/29(水) 23:21:120166デフォルトの名無しさん
2006/03/29(水) 23:24:07直接MLに投稿すれば一発で解決するものを、何だって遠回りな手段を選ぶのか、
その思考回路からして理解できない。
と言って追い返せばおkだねw
0167デフォルトの名無しさん
2006/03/29(水) 23:24:23荒らしに反応するのも荒らしって知ってた?
0168デフォルトの名無しさん
2006/03/29(水) 23:28:090169デフォルトの名無しさん
2006/03/29(水) 23:28:550170デフォルトの名無しさん
2006/03/29(水) 23:31:35その思考回路からして理解できない。
ん、ん〜、これは名言だな。
このスレのテンプレにしようぜ。
0171デフォルトの名無しさん
2006/03/29(水) 23:35:02全てのリテラルを正規表現で表したくて仕方が無いほど厳密で美しい言語を求めてる人には向きません。
とも。
0172デフォルトの名無しさん
2006/03/29(水) 23:36:140173デフォルトの名無しさん
2006/03/29(水) 23:37:08理解できない。
0174デフォルトの名無しさん
2006/03/29(水) 23:42:12確率論的に見て限りなく低いが、ありえる。
PCからはそれが"人間にとって"意味を成す文字列データであるかは解釈不能なので、
よって、バイナリファイルであるか、何らかの文字列であるかはPCから見て原理的に無保証。
即ち、入力される時点で何らかの形でデータ形式が保障されている実装になるようにしたほうが無難。
コレで解答になってるかしらん?
0175デフォルトの名無しさん
2006/03/29(水) 23:43:240176デフォルトの名無しさん
2006/03/29(水) 23:44:020177デフォルトの名無しさん
2006/03/29(水) 23:48:14その思考回路からして理解できない。
0178デフォルトの名無しさん
2006/03/29(水) 23:54:00其の話題終わった。
テンパってる。
0179デフォルトの名無しさん
2006/03/29(水) 23:58:54て欲しいものだな。
コレで回答になってるかしら?
0180デフォルトの名無しさん
2006/03/30(木) 00:01:25MLへの投稿は初心者として敷居が高いので、
匿名掲示板の皆様にお尋ねすることにしました。
どうかご助力願います。
これ質問者の代わりに張っといて。
0181デフォルトの名無しさん
2006/03/30(木) 00:02:41勝手が分からず申し訳ないです。
正しい質問先に誘導願います。
これも質問者の代わりに張っといて。
0182デフォルトの名無しさん
2006/03/30(木) 00:02:490183デフォルトの名無しさん
2006/03/30(木) 00:05:01MLの投稿を、敷居が高いとかアホいってんのか。
Rubyの勉強の前にまずメールの使い方と、正しい日本語を習うんだな。
0184デフォルトの名無しさん
2006/03/30(木) 00:06:32しょうがないなぁ。ホレ つhttp://www.google.co.jp/
0185デフォルトの名無しさん
2006/03/30(木) 00:09:51いいと思うので誘導先なんて分からん。
それ以前に>>174がひとつの回答になってるだろうと思う。
あるいは、(文字コード判定と同様に)ある程度の精度で
判定してくれる(もの|方法)ならあるかもしれんと思うが、
あいにく俺はそんなものしらないので沈黙。
0186デフォルトの名無しさん
2006/03/30(木) 00:11:33つまらんことするね。
0187デフォルトの名無しさん
2006/03/30(木) 00:13:55ハズレw
ところで荒らしに反応するのも荒らしって知ってた?
0188デフォルトの名無しさん
2006/03/30(木) 00:24:360189デフォルトの名無しさん
2006/03/30(木) 00:28:49言語やライブラリの設計思想に関しては、みんなMatz氏の言葉をなぞっているだけだから、
質問するならMatz氏本人に訊くのが一番…と言いたかったんだよ。
言葉足らずでスマン。
ttp://www.hyuki.com/writing/techask.html#direct
0190デフォルトの名無しさん
2006/03/30(木) 00:34:12これでそれが伝わるわけがない。
162 名前:デフォルトの名無しさん[sage] 投稿日:2006/03/29(水) 22:41:10
定期的に変なのが湧きますね。
直接MLに投稿すれば一発で解決するものを、何だって遠回りな手段を選ぶのか、
その思考回路からして理解できない。
仕様がどうのという以前に、まずは正しい質問先を見極めることから勉強してき
て欲しいものだな。
0191デフォルトの名無しさん
2006/03/30(木) 00:39:37% ruby -rnkf -e 'p NKF::guess(ARGF.read) == NKF::BINARY' /bin/sh
true
0192デフォルトの名無しさん
2006/03/30(木) 00:42:57>>47に対して「そんなことMatzに訊けよ」とか
「MLで訴えたら?」とか上で言われてるんだから。
0193デフォルトの名無しさん
2006/03/30(木) 00:46:0147氏、OZ TECH マダァ?
というか、こういったショボイ糞野郎便所のオナヌィ落書を吸収してくれることこそ 2ch の真価。
頼むから ML なんかに投げないでくれ(w
0194デフォルトの名無しさん
2006/03/30(木) 00:55:57分かる分かんないの問題じゃない。
言葉足らずじゃなくて、逆だ。言葉が多すぎる。
こんな文を付け加える必要があるか?
>定期的に変なのが湧きますね。
>その思考回路からして理解できない。
>仕様がどうのという以前に、まずは正しい質問先を見極めることから勉強してき
て欲しいものだな。
0195デフォルトの名無しさん
2006/03/30(木) 01:00:14直接MLに投稿すれば一発で解決するものを、何だって遠回りな手段を選ぶのか、
その思考回路からして理解できない。
これはどんな質問にでも対応できる名言なことはたしかじゃまいか
有効活用していこう。
0196デフォルトの名無しさん
2006/03/30(木) 01:17:03うざい
0197デフォルトの名無しさん
2006/03/30(木) 01:17:490198デフォルトの名無しさん
2006/03/30(木) 01:32:310199デフォルトの名無しさん
2006/03/30(木) 01:37:500200デフォルトの名無しさん
2006/03/30(木) 02:31:000201デフォルトの名無しさん
2006/03/30(木) 02:43:11InputBox、MsgBoxは VBScriptの関数 なので VBScriptでしか 使えない。
MsgBox相当のことはWScript.ShellのPopupメソッドを呼べばよろし。
InputBox相当はちと分からん、スマソ
0202デフォルトの名無しさん
2006/03/30(木) 07:18:40よし、次から回答テンプレだな
020347
2006/03/30(木) 11:11:39回答してくれた人、どうもありがとうございました。特に決定打を紹介してくれた>>132、どうもです。
間違った推測もありましたが、それはそれで考えるうえでの参考になったので、よかったと思います。
ただ自分の推測を押しつける人とか、反論されると怒る人とか多いのは残念でした。そんなこと書くくらいなら、反論の反論とか、推測の根拠をきちんと説明するとかしてほしかったです。反論できなくなったから「粘着だ」とかいって逃げるしかなかったんでしょうけど。
あと、>>132にはメーリングリストからの発掘方法を教えてくれるとうれしいです。また>>135は「可読性」がどこからでてきたのか教えてください。
020447
2006/03/30(木) 11:12:45>>152
nilとの比較でいえば、==nilも.equals? nilも同じ挙動だと考えていいのでは。
前にも書いたように、==を再定義しても==nilは同じ挙動を示すと考えていいと思うし、.equals?だって変なふうに再定義される可能性がありますよね(いいかどうかは別として)。それこそ.nil?だって。
また.equals? nilを特別扱いするなら、.equals? trueと.equals? falseも同じように扱われるべきだと思うけど、そうなってはいません。
と書いたら、そう思うのはおまえだけとか書かれるんだろうな。乙。
>>154
あいかわらずわかりません。
>否定する根拠が再反論によって消滅したため
どの「否定する根拠」がどういった「再反論によって消滅した」のですか。具体的な文でお願いします。
>あと、話が分からないときに比喩を使うのは、混乱の元ですからやめましょう。
わかりやすく話してもらえれば、比喩を使うことはないです。また混乱のもとなのは、話がわかりにくいからであって、比喩のせいじゃないです。
>>161
すこし返事が遅れただけで>>112みたいに「スルーですか」といわれて、こんどは「なんでほぼ全レスなんだwww」ですか。むずかしいなあ。
>>162
おいおい、自分は根拠のない推測を並べて混乱させておいて、その推測が否定されると
>直接MLに投稿すれば一発で解決するものを、何だって遠回りな手段を選ぶのか、
>その思考回路からして理解できない。
とかいいだすんですか。それなら最初からそう回答すればいいのに。あとからそんなことをいってもね。
つか、>>132の答えを投稿すれば一発で解決するものを、推測ばかりたて並べてるほうが理解できないです。
0205132
2006/03/30(木) 15:24:15答えを覚えていてもソースのありかを覚えているとは限らないからね。
「なぜ Object#nil? が == nil より便利なのか」は、皆さんが回答した通り。
135を書いたのも俺なんだが、わざわざ「[ruby-dev:7968]からのスレッド」と書いた意図がまったく理解されていないな。
提案者が提案の意図として可読性を上げていて、Matzがそれに反論せずに採用を決定してるんだから、採用の意図は当然可読性だよ。
いちいち記憶を頼りにメールボックスを探しまくって結論を出してみたわけだが、47には理解力も展開力も想像力もないということがよくわかっただけだった。
こんな質問者が相手じゃ誰も真面目に答える気なくすよ。
0206デフォルトの名無しさん
2006/03/30(木) 15:28:57足りないだけなんじゃないかという気がする。
ある程度経験を積んだプログラマなら nil? のキモチヨサがわかると思うんだけどなあ。
0207デフォルトの名無しさん
2006/03/30(木) 15:30:21経験とか曖昧な言葉でお茶を濁して説明を放棄するならもう黙っとけ
0208デフォルトの名無しさん
2006/03/30(木) 15:48:45イヤです。厳密な説明しか許さないのならテンプレにそう書いておくべきです。
0209デフォルトの名無しさん
2006/03/30(木) 16:29:37すまんこ。
0210デフォルトの名無しさん
2006/03/30(木) 16:43:55問題は、訊ねた相手のせいにして47が成長しようとしないこと。
47はこれからも人に訊いては相手を不愉快にさせ続ける。ひどい。
0211デフォルトの名無しさん
2006/03/30(木) 17:11:380212デフォルトの名無しさん
2006/03/30(木) 17:27:15「ここは馬鹿ばかりで議論になりませんね」
という捨て台詞を吐くまでが長いんだよなあ。
0213デフォルトの名無しさん
2006/03/30(木) 17:35:25話のわかる奴が誰か俺の代わりに説明してくれよ。
初心者スレつまんねー
こんなんだから人が寄りつかないんだよ
本スレ行こうかな?
0214デフォルトの名無しさん
2006/03/30(木) 17:54:47# リマスター版、高過ぎだお
>>213
馬鹿相手だと、本スレでも間違いなく同じ流れになるからw
0215デフォルトの名無しさん
2006/03/30(木) 18:40:26という内容に対して「この場合それは嘘だが」
と言われてることすら理解できずに
「相手が理解していないんだー」とアピールしている
やっと捨て台詞?
0216デフォルトの名無しさん
2006/03/30(木) 18:41:150217デフォルトの名無しさん
2006/03/30(木) 19:03:180218デフォルトの名無しさん
2006/03/30(木) 19:18:150219デフォルトの名無しさん
2006/03/30(木) 19:52:17ruby rake でぐぐっても、みつかりませんでした。
0220デフォルトの名無しさん
2006/03/30(木) 20:11:45Foo = 1
Bar = 2
Baz = 3
...
をマジックナンバーばら撒かずに簡単に初期化する方法ないですか?
よーするにenum使いたいんですが。
0221デフォルトの名無しさん
2006/03/30(木) 20:22:15捨てアドだとスルーされるし。
0222デフォルトの名無しさん
2006/03/30(木) 20:39:55とか?
0223デフォルトの名無しさん
2006/03/30(木) 20:40:520224デフォルトの名無しさん
2006/03/30(木) 20:57:501, 2, 3が意味のない数値であるならば、そもそもFoo, Bar, Bazに意味のない値を代入するのが無駄。
例えば、シンボル :Foo, :Bar, :Baz をそのまま使えばよろしい。
0225デフォルトの名無しさん
2006/03/30(木) 21:43:01:Foo
:Bar
:Baz
state = :Foo
puts "Foo" if state == :Foo
puts "foo" if state == :Hoo
0226デフォルトの名無しさん
2006/03/30(木) 22:10:430227デフォルトの名無しさん
2006/03/30(木) 22:36:54それ見てこんなの思いついた。
めんどくさいだけだがw
State = Hash.new{|h, k| h[k] = k}
State[:foo]; State[:bar]; State[:baz]
State.freeze
state = State[:foo]
puts "Foo" if state == State[:foo]
puts "foo" if state == State[:hoo]
0228デフォルトの名無しさん
2006/03/30(木) 22:52:47でいいんじゃね?
スペルミス対応済みで、pでの出力も見やすい。
0229デフォルトの名無しさん
2006/03/30(木) 22:56:48その、Foo = :Foo とか書くのがなんか二度手間でいやだなあ。
そこまで言うと初心者スレの範囲を超えそうだが。
023047
2006/03/30(木) 23:01:16作者の怠慢にしか思えません。
0231デフォルトの名無しさん
2006/03/30(木) 23:11:19インスタンス変数にシンボルいれてアクセサとか
0232デフォルトの名無しさん
2006/03/30(木) 23:21:20Bar = 2
Baz = 3
と
enumの違いがわからない。
どちらも定数みたいな物じゃないのか?
0233デフォルトの名無しさん
2006/03/30(木) 23:29:37>提案者が提案の意図として可読性を上げていて、Matzがそれに反論せずに採用を決定してるんだから、採用の意図は当然可読性だよ。
違う。反論していないからといって、勝手に同意したことにするな。
matzは可読性については何も言及してない。あくまで「採用してもいいかなと思ってる」と書いてるだけ。だから採用の理由はこれだけでは不明。
勝手な解釈で初心者を惑わすようなやつが、なんでこんなにえらそうなんだ?
0234デフォルトの名無しさん
2006/03/30(木) 23:34:54Foo + Barは3? ということじゃないか
C言語ならそうなんだけど、そうならないものが欲しいと
0235デフォルトの名無しさん
2006/03/30(木) 23:37:44簡潔に宣言できて少なくとも関連する要素間では値がダブらず
必要であれば値を明示できるものがenumに求められる。
0236デフォルトの名無しさん
2006/03/31(金) 00:41:320237デフォルトの名無しさん
2006/03/31(金) 01:20:42みたいなコードで落ち着いた気がするが。
0238デフォルトの名無しさん
2006/03/31(金) 01:29:290239デフォルトの名無しさん
2006/03/31(金) 02:13:23おもしろいな。
0240デフォルトの名無しさん
2006/03/31(金) 07:53:380241デフォルトの名無しさん
2006/03/31(金) 08:23:43だって、enumの有無なんて気にしない人のほうが多そうだし
0242デフォルトの名無しさん
2006/03/31(金) 09:47:02a = 1
print "abc#{a}def\n"
とすると#{a}の部分は展開されて表示しますが
この内容「abc#{a}def\n」をテキストファイルに保存し1ラインずつ
読んでprint文に渡すと展開してくれません
※メタ文字がエスケープされる?
これを展開する方法はありますか?
0243デフォルトの名無しさん
2006/03/31(金) 10:48:15うまくいかない理由:
"abc#{a}def¥n" の #{a} が展開されるのは、rubyコマンドがスクリプトをパースするときです。つまり #{a} が展開されるためにはrubyによってパースされる必要があります。
しかしファイルからFile.read()などで読み込むと、rubyがパースすることはありmせん。なぜなら、File.read()などによる読み込みはあくまでデータとして読み込むだけであり、スクリプトとして読み込むわけではないからです。
これに対し、require や load だとスクリプトとして読み込まれるため、rubyがパースしてくれ、#{a}も展開されます。
解決策:
今回の場合は、eval使うしかないでしょう。
#{a} の部分があまり複雑じゃなければ次をどうぞ。
data = File.read(filename)
print data.gsub(/¥#¥{(.*?)¥}/) { eval $1 }
参考:
ここからは想像ですが、もしエラーメッセージなどを外部ファイルにするのが目的なら、#{a}ではなくて %s を使い、String#% や sprintf() で展開するのが簡単です。
msg = "error: %s (error code %d).¥n"
print msg % ['invalid name', 123]
またテンプレートに式を埋め込むのが目的なら eRuby を使いましょう。詳しくは ERB でぐぐってみてください。
以上です。
0244243
2006/03/31(金) 10:53:17だれか俺のかわりに思い出してくれ
0245デフォルトの名無しさん
2006/03/31(金) 11:36:57直接MLに投稿すれば一発で解決するものを、何だって遠回りな手段を選ぶのか、
その思考回路からして理解できない。
0246デフォルトの名無しさん
2006/03/31(金) 11:58:29ありがとうございます。
動きました。
#{}の中で変数/定数の加減算がしたかったのです。
これだと何でも動いちゃう気がして怖いのですが
自分しか使わないから問題ないです。
0247デフォルトの名無しさん
2006/03/31(金) 13:01:02えらい便利な ML だな。俺も最近ど忘れが激しいので subscribe しようかしら。
0248デフォルトの名無しさん
2006/03/31(金) 13:38:52はいはいそうですねそうですねそういうことにしましょうね
0249デフォルトの名無しさん
2006/03/31(金) 14:03:04すげー便利じゃん。
0250デフォルトの名無しさん
2006/03/31(金) 16:25:47ちゃんとコテ付けろよw
0251デフォルトの名無しさん
2006/03/31(金) 17:06:381.9だとsave_histもあるらしいが。
0252デフォルトの名無しさん
2006/03/31(金) 17:13:46http://www.rubygarden.org/ruby?Irb/TipsAndTricks
のpersistent Historyを入れているので 1.8 でも満足です。
■ このスレッドは過去ログ倉庫に格納されています