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

Ruby初心者スレッドPart4

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2006/01/22(日) 20:02:29
オブジェクト指向スクリプト言語Rubyについての質問スレッドです。

Ruby Home Page
http://www.ruby-lang.org/ja/



#過去スレ
Ruby初心者質問スレPart1
http://pc5.2ch.net/test/read.cgi/tech/1100534824/

Ruby初心者質問スレPart2
http://pc8.2ch.net/test/read.cgi/tech/1107799347/

Ruby初心者質問スレPart3
http://pc8.2ch.net/test/read.cgi/tech/1125587131/



#本スレ
Rubyについて Part 18
http://pc8.2ch.net/test/read.cgi/tech/1133988248/



#関連スレ
RUBYの宿題教えてください。
http://pc8.2ch.net/test/read.cgi/tech/1106572657/

【最高言語】 Rubyist Magazine創刊 【ルビま!】
http://pc8.2ch.net/test/read.cgi/tech/1094825807/
0951>>1は妹に恋をする2006/03/25(土) 04:17:36
Rubyの源流はPerlなんだけど、
元のPerlが0や"0"を偽として扱うことによっていろんな弊害を産んでいたから、
Rubyではfalse,nil以外偽と扱わないようになったんだと覚えてる。

例えばwhile($dest = $src){ .... みたいな制御構文で、
$srcが何かのタイミングで"0"になったらいきなりループ抜けてしまったり、とか。
0952デフォルトの名無しさん2006/03/25(土) 09:36:36
よくあるいちゃもんとその答えとして早くまとめるんだ
0953デフォルトの名無しさん2006/03/25(土) 09:48:13
>>951
Perlでも "0" は偽じゃないよ。と、突っ込んでみる。
0954デフォルトの名無しさん2006/03/25(土) 10:20:24
C:\> perl -e "print '0'?'true':'false'"
false
09559402006/03/25(土) 11:57:28
>>945
Rubyは、厳密さよりも簡潔さを優先しているから、boolean以外のものも受け付けるようになっている。そっちのほうが簡潔に書けるからね。
あとは慣れの問題じゃないかな。Rubyの仕様に慣れると、if文の条件式にいちいち obj != null とかつけるのがすげー面倒くさく感じるようになる。

Perlだと0や""も偽として扱うようになってるけど、これはちょっと困るよね。C言語はアセンブラみたいなもんだから0を偽とする仕様はわかるけど(ほかに偽となるような適当な値がないので)。

あと「条件式は必ずboolean」という仕様だと、
obj = obj1 || obj2 || obj3
tmpdir = ENV['TEMP'] || ENV['TMP'] || '/tmp'
という記述ができなくなるので、おれ的には反対。

>>941
おもしろくないっていわれたからって、つっかかってくんなよ
0956デフォルトの名無しさん2006/03/25(土) 12:12:33
>>955
初心者スレだと予想される答もありきたりでおもしろくなさそうだろうからじゃないか?
0957デフォルトの名無しさん2006/03/25(土) 12:44:52
Perl の真偽値の仕様は、あれはあれで便利なんだけどな。
defined() を使わないといけないところで忘れるというミスを誘発しやすいが。
0958デフォルトの名無しさん2006/03/25(土) 13:56:35
んでRubyはちょうどよいと
0959デフォルトの名無しさん2006/03/25(土) 19:06:28
んだな。

obj ||= "defaultvalue"

みたいな記述が便利だ
0960デフォルトの名無しさん2006/03/25(土) 19:44:06
>>959
PHPでそれやって真偽値になってショボーンってなった。
0961デフォルトの名無しさん2006/03/25(土) 19:47:11
||= はPerlから
0962デフォルトの名無しさん2006/03/25(土) 23:24:07
Perl でそれやると 0 が上書きされて(´・ω・`)ショボーン
0963デフォルトの名無しさん2006/03/26(日) 01:56:02
perl の defined-or (//=) ってまだつかえんのか。
0964デフォルトの名無しさん2006/03/26(日) 02:22:35
>>963
どんな機能なのだろう。
便利であってもへんてこな文法なら導入にはちょっと〜。
0965デフォルトの名無しさん2006/03/26(日) 03:54:58
>>963
nil と false を区別したいときなんてほとんど無いからなあ。
0966ヽ(´ー`)ノ ◆.ogCuANUcE 2006/03/26(日) 03:59:16
>>963
5.8.x でも patch 当てたら使えるけど、基本的には Perl6 の機能だからね。
Ruby は Object#nil? あるから要らんよね。

>>964
|| や or は真偽値のチェックをするけど、dor(defined-or) 演算子は
undef (Ruby だと nil) かどうかをチェックする。// と err だな。

$n = some_op() or 5;    # some_op() が偽を返したら 5 を代入
$n = some_op() err 5;    # some_op() が undef を返したら 5 を代入
0967デフォルトの名無しさん2006/03/26(日) 10:53:09
上の最後のは Ruby だとどう書くんだろう。こうかな?

foo = defined?(bar()) ? bar() : 5

?で終る述語を三項演算子に使うとなんかカッコワルイ...
0968ヽ(´ー`)ノ ◆.ogCuANUcE 2006/03/26(日) 11:36:07
n = (v = some_op()).nil? ? 5 : v

うーん、素直に二行に書いた方が良さそうだな。
まぁ何でも一行に詰め込むような言語でもないし、いいんじゃね?

n = some_op()
n = 5 if n.nil?
0969デフォルトの名無しさん2006/03/26(日) 11:56:23
その場合なら
n = (v = some_op()) ||= 5
0970デフォルトの名無しさん2006/03/26(日) 12:04:37
右辺で初出のローカル変数は NameError だから、
一般的には defined? でテストしないといけない気がしたのだな。
0971デフォルトの名無しさん2006/03/26(日) 15:33:41
そろそろ次スレの準備だけど、なんか書いておくことある?
個人的には、リンク先とかは2以降に書いて、1には質問するときの諸注意とか、スレのローカルルールみたいなのを書いた方がいいと思う。
あと初心者スレなんで、既出の質問とか似たような質問もOKとしてあげたい。たとえ回答が「XXを読め」だけだとしても。だめかな?
0972デフォルトの名無しさん2006/03/26(日) 16:01:57
>>971
良いのでテンプレよろ
0973デフォルトの名無しさん2006/03/26(日) 17:30:23
>>971
> あと初心者スレなんで、既出の質問とか似たような質問もOKとしてあげたい。

せめてスレ内検索くらいはして欲しいと思うのだが、そこまで甘やかす必要、ある?
0974デフォルトの名無しさん2006/03/26(日) 17:32:28
と思ったが、まあどうでもいいや。
とりあえず、テンプレよろ。
0975デフォルトの名無しさん2006/03/26(日) 17:43:47
テンプレ
初心者そっちのけで毎度毎度のループ議論に突入禁止
0976デフォルトの名無しさん2006/03/26(日) 17:59:41
話は変わるが今日の夕食はうどのテンプラのようだ
0977デフォルトの名無しさん2006/03/26(日) 18:01:03
>>973
いいんじゃない?気が向いたやつが「>>999をよめ」とか回答するだけで。

テンプレ、PHP質問スレを参考にしてみた。
---
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
関連スレや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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0978デフォルトの名無しさん2006/03/26(日) 18:02:00
続き:
---
#本スレ
Rubyについて Part 19
http://pc8.2ch.net/test/read.cgi/tech/1140762419/

#関連スレ
【Agile】Ruby on rails相談所【DRY】
http://pc8.2ch.net/test/read.cgi/php/1118663500/

RUBYの宿題教えてください。
http://pc8.2ch.net/test/read.cgi/tech/1106572657/

【最高言語】 Rubyist Magazine創刊 【ルビま!】
http://pc8.2ch.net/test/read.cgi/tech/1094825807/


#過去スレ
Ruby初心者質問スレPart1
http://pc5.2ch.net/test/read.cgi/tech/1100534824/

Ruby初心者質問スレPart2
http://pc8.2ch.net/test/read.cgi/tech/1107799347/

Ruby初心者質問スレPart3
http://pc8.2ch.net/test/read.cgi/tech/1125587131/

Ruby初心者スレッドPart4
http://pc8.2ch.net/test/read.cgi/tech/1137927749/
0979デフォルトの名無しさん2006/03/26(日) 18:03:27
#関連リンク

Ruby Home Page
http://www.ruby-lang.org/ja/

リファレンス
http://www.ruby-lang.org/ja/man/

FAQ
http://ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ

RAA - Ruby Application Archive
http://raa.ruby-lang.org/

日本Rubyの会 公式Wiki - 日本Rubyの会Wiki
http://jp.rubyist.net/

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/

Matzにっき
http://www.rubyist.net/~matz/

<rubyXML/>
http://www.rubyxml.com/

Ruby Weekly News @ Ruby Garden
http://www.rubygarden.org/rurl/html/

Ruby hotlinks 五月雨版
http://rrr.jin.gr.jp/~znz/samidare/
0980デフォルトの名無しさん2006/03/26(日) 18:38:39
>977
> 「>>999をよめ」

p res[999] # => "埋め\n"
0981デフォルトの名無しさん2006/03/26(日) 18:39:38
ループネタなんでこっちのマニュアルも載せておいた方が良いと思うんだ。
http://www.ruby-doc.org/

直接こっち側を載せた方が良いかもしれない。
http://www.ruby-doc.org/core/
http://www.ruby-doc.org/docs/ProgrammingRuby/
0982デフォルトの名無しさん2006/03/26(日) 18:43:05
「Ruby hotlinks 五月雨版」
リンク切れてるな。
0983デフォルトの名無しさん2006/03/26(日) 19:20:42
そういやどっかDATとかとってるとこは無いの?
検索してるとときどきアンカーのマウスオーバーで2ちゃんブラウザみたいに
ポップアップが出てくる javascript が仕込んである過去ログサイトもあったりする
ああいうのがないと過去ログ探しにくいかもね
0984デフォルトの名無しさん2006/03/26(日) 21:14:08
にくちゃんねるにある程度残ってない?
09859772006/03/27(月) 04:41:13
げ、もう残りすくないじゃん。
>>977
でいいのか?かなり初心者寄りのテンプレにしちゃったんだけど。

>>981
初心者が英語を読むとは思わないが、載せるのは悪くないので追加してみる。

>>982
こっちだな。すまんかった。
http://www.rubyist.net/~kazu/samidare/

09869772006/03/27(月) 05:21:55
残り少ないので、勝手に次スレたてた。文句はあとできく。

Ruby初心者スレッドPart5
ttp://pc8.2ch.net/test/read.cgi/tech/1143403165/

変更点
・hotlinksのリンク修正
・ProgrammingRubyのリンク追加
・rubydoc.orgのリンク追加
・rubyforge.orgのリンク追加
・Rubyの本一覧のリンク追加
・リンクに簡単な説明を追加
0987デフォルトの名無しさん2006/03/27(月) 07:48:41
>>983
http://www.2chdat.net/ ここで頼めば作ってくれるんじゃないかな
0988デフォルトの名無しさん2006/03/27(月) 10:55:35
Q. どうしてRubyは〜がないの?

A. Python使いましょう。
0989デフォルトの名無しさん2006/03/27(月) 10:58:02
Q. RubyはRailsなしでも動きますか?
0990デフォルトの名無しさん2006/03/27(月) 11:24:14
A. Railsなしでは(稟議が通らずプロジェクトが)動きません。
0991デフォルトの名無しさん2006/03/27(月) 12:24:53
えっ?
Rails and/or Ruby業務で使ってるところあるの?
0992デフォルトの名無しさん2006/03/27(月) 12:33:18
毎日仕事でRubyばっか。今日もRubyUnitで単体テスト書かなくっちゃ。
0993デフォルトの名無しさん2006/03/27(月) 13:13:51
>>991
その程度だと最近は釣れないらしいよ
0994デフォルトの名無しさん2006/03/27(月) 13:56:20
RubyUnit …
くっ。釣られんぞー。
0995デフォルトの名無しさん2006/03/27(月) 14:11:40
>>990
ワロタ
0996デフォルトの名無しさん2006/03/27(月) 15:36:43
むしろ「RailsはRubyなしで動きますか?」だろう
0997デフォルトの名無しさん2006/03/27(月) 16:10:10
phpであきれたけどな。
strpos()だったか文字列検索で、見つかったら文字の位置を返すんだが、
先頭で見つかって0番目の位置返してくると、if文で偽となるんで難儀した。
見つからなかったときのFALSEと区別つかん・・・

結局、php4で追加された === が使えるようになるまで、いちいち回避してた。
0998デフォルトの名無しさん2006/03/27(月) 16:27:31
>>986
乙。GJでした。
0999デフォルトの名無しさん2006/03/27(月) 16:39:26
>>996 元ネタは ruby-talk:186016
1000デフォルトの名無しさん2006/03/27(月) 16:40:22
→ Ruby初心者スレッドPart5
ttp://pc8.2ch.net/test/read.cgi/tech/1143403165/
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。