Ruby について Part 3
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGRuby Home Page
http://www.ruby-lang.org/ja/
<前スレ>
Rubyについて Part 2
http://pc3.2ch.net/test/read.cgi/tech/1028906179/
<過去スレ>
Rubyについて
http://pc3.2ch.net/test/read.cgi/tech/1012096319/
0611デフォルトの名無しさん
NGNG注釈云々からすると「オブジェクト指向スクリプト言語Ruby」(通称Ruby本)じゃ
ないかと思うが、あれはまったく初心者向けじゃないよ。
0612デフォルトの名無しさん
NGNGつーことね。
0613デフォルトの名無しさん
NGNG個人的経験からいうと、初心者向けのサイトを作ると覚えるよ。
0614599
NGNGスマソ、今見直したら
「原信一郎 著 まつもとゆきひろ 監修」と書かれてますた。
「著 まつもとゆきひろ」部分だけ見て激しく勘違い。
本の名は間違い無く「Rubyプログラミング入門」。
0615名無しさん@xyzzy
NGNG目的がないからおぼえないんだよきっと。tdiaryとか導入していま流行の
bloggerになってみれば?tdiaryのpluginをかくためにrubyを覚えたひと
もいるよ。
0616デフォルトの名無しさん
NGNG0617597
NGNGsyck-0.15 とかいうのだとダメだったんで、
CVS 最新を取り寄せて試してみたところ、問題なさそうでした。
また何か問題が見つかったら適宜報告するようにします。
0618597
NGNGYAML もっと普及するといいなぁ。
0619デフォルトの名無しさん
NGNG0620デフォルトの名無しさん
NGNGこれ読むまで、
オブジェクト?はぁ?クラス?はぁ?インスタンス?はぁ?
って感じの漏れだったが、これ読んだら概念がちょこっとわかったよ。
ちなみに「たのしいRuby」を読んでもオブジェクト指向がなんなのか
全然理解できなかった。これを読んだあとも
オブジェクト?はぁ?クラス?はぁ?インスタンス?はぁ?
の状態に変わりはなかった。
けど、超基礎から説明してるので、
プログラム自体が初心者の人は「たのしい」から読むべきだろうね。
「Rubyプログラミング入門」はUNIXの基礎とか、プログラムの基礎とか知らないと、
わけの分からん用語の連続になっちゃうよ。
0621デフォルトの名無しさん
NGNGRubyに興味を持ち、先日初めてオフィシャルページを
みてきました。Rubyはvariable declarationがいら
ないようなんですが、そこで質問です。
functionがinteger valueにreturnするときなんか
はどうなるのでしょう?例えばc++で
int function(int i, int j)
{
return i+j;
}
これをRubyでかくと、どうなるのでしょうか?
簡単すぎる質問ですみません。
0622Ruby知らない
NGNG0623621
NGNGすみません。海外在住なのです。
日本の本が手に入らない僻地にいるので、webだけが
たよりなのですが、なかなか簡単なサンプルがないの
で、ここで聞きました。
0624_
NGNG( ・∀・)/< こんなのみつけたっち♪
http://www.hiroyuki.zansu.com/hankaku/jaz03.html
http://hiroyuki.zansu.com/hankaku/jaz10.html
http://www.hiroyuki.zansu.com/hankaku/jaz08.html
http://hiroyuki.zansu.com/hankaku/jaz09.html
http://www.hiroyuki.zansu.com/hankaku/jaz06.html
http://hiroyuki.zansu.com/hankaku/jaz05.html
http://www.hiroyuki.zansu.com/hankaku/jaz01.html
http://hiroyuki.zansu.com/hankaku/jaz02.html
http://www.hiroyuki.zansu.com/hankaku/jaz07.html
http://hiroyuki.zansu.com/hankaku/jaz04.html
0625デフォルトの名無しさん
NGNGdef function(i,j)
return i+j;
end
とも書けるけど、大半のヤシは
def function(i,j)
i+j
end
と書くだろう。
0626デフォルトの名無しさん
NGNGYAMLは、現在開発中の新バージョンは拡張ライブラリになって
おり、これはとっても速いらしい。まだα状態だろうけど。
0627デフォルトの名無しさん
NGNGdef function(i,j) i+j end
p function(1,2) #=> 3
p function("foo"+"bar") #=> "foobar"
型を指定するための方法というのはない
どうしても検査したければ obj が Klass のインスタンスであることを
obj.is_a? Klass によって検査することはできるがあまり使わない
0628デフォルトの名無しさん
NGNG> p function("foo"+"bar") #=> "foobar"
p function("foo","bar") #=> "foobar"
0629621
NGNG夜12時のshowだったのですが、すごい混雑ぶりでした。
>>625, 627
どうもありがとうございます。
本当に型がないのですね。(笑) javaとC++しかしらな
い私にとっては、とても不思議です。
0630デフォルトの名無しさん
NGNG> 本当に型がないのですね。
変数にはない。オブジェクトが型を持っている。
0631_
NGNG( ・∀・)/< こんなのみつけたっち♪
http://www.hiroyuki.zansu.com/hankaku/jaz03.html
http://hiroyuki.zansu.com/hankaku/jaz10.html
http://www.hiroyuki.zansu.com/hankaku/jaz08.html
http://hiroyuki.zansu.com/hankaku/jaz09.html
http://www.hiroyuki.zansu.com/hankaku/jaz06.html
http://hiroyuki.zansu.com/hankaku/jaz05.html
http://www.hiroyuki.zansu.com/hankaku/jaz01.html
http://hiroyuki.zansu.com/hankaku/jaz02.html
http://www.hiroyuki.zansu.com/hankaku/jaz07.html
http://hiroyuki.zansu.com/hankaku/jaz04.html
0632デフォルトの名無しさん
NGNG開発中のYAML次期バージョンは拡張ライブラリとして実装
されているため、とても速いらしい。
0633( ´w`)
NGNGここの管理人は『2chに行くヤツは全員オタクだ。
2ch用語発言したボケはアク禁』などとほざくゴミだ。
これはひろゆき氏及び全ての2ちゃんねらーに対する侮辱である。
ここに行って2ch用語を連発して頂きたい。
0634デフォルトの名無しさん
NGNG藻前一人でいきがってれば?
0635デフォルトの名無しさん
NGNG藻前
konnnakotobadukaisuruyatuniiwaretakunaiyona.
0636デフォルトの名無しさん
NGNG開発中の次期バージョンの Ruby は拡張ライブラリとして
現在とても速いα実装をしており、とても YAML らしい。
0637デフォルトの名無しさん
NGNG0638デフォルトの名無しさん
NGNG0639638
NGNGclass Array
def shuffle
src, dst = self.dup, []
while not src.empty?
dst << src.delete_at(rand(src.size))
end
dst
end
end
0640デフォルトの名無しさん
NGNGclass Array
def shuffle!
size.downto(2) do |i|
j = rand(i)
self[i], self[j] = self[j], self[i] unless (i -= 1) == j
end
self
end
def shuffle
dup.shuffle!
end
end
0641デフォルトの名無しさん
NGNGdef shuffle!
size.downto(1){|i|
push delete_at(rand(i))
}
self
end
end
0642デフォルトの名無しさん
NGNGそれと、delete_atはそれ以降を全部ずらすから、大きいArrayに対しては効率
が落ちる。
0643デフォルトの名無しさん
NGNGおまけ(実用性はたぶんない)
class Array
def shuffle!
sort!{
rand - 0.5
}
end
end
0644デフォルトの名無しさん
NGNGいや、もちろんなんだかぐちゃぐちゃになりそうだなってのは分かるけど
ちゃんとn!通りの並びの全てが等確率で出るのかどうかよく分からない。
0645デフォルトの名無しさん
NGNG0646デフォルトの名無しさん
NGNGソートのアルゴリズムも知らない中学生ですか?
0647デフォルトの名無しさん
NGNG試してみるとわかると思うが、終わらない。
0648デフォルトの名無しさん
NGNG% ruby -e 'class Array; def shuffle!() sort!{ rand - 0.5 } end end ; a=[0
,1,2,3,4,5,6,7,8,9]; a.shuffle!; p a'
[1, 7, 9, 3, 5, 0, 8, 6, 2, 4]
%
終わるけど?
0649デフォルトの名無しさん
NGNGdef shuffle!(&block)
if block
1.upto(size-1){|i| j = block[i+1] ; self[i],self[j] = self[j],self[i]}
else
1.upto(size-1){|i| j = rand(i+1) ; self[i],self[j] = self[j],self[i]}
end
self
end
end
上の方法だとrand(n)かblock[n]が0,…,n-1を等確率で返すことを仮定すれば
すべての要素が異なるときにそれぞれの順列が等確率になることを証明できるが
他の方法はどう?
0650デフォルトの名無しさん
NGNG中央値はランダムに決定されることは自明だと思うので省略。
残りの要素はランダムに振り分けられるので、左右どちらに行くかは等確率。
これを再帰的に繰り返せば全体も等確率と考えていいんじゃないかな。
ただ、最後はselection sortを使ってるんで、これは等確率じゃないような気がする。
n個の要素から最小値を選び出す場合、最初に比較された要素が選ばれる確率は
2**(1-n)だけど、最後に比較されたものが選ばれる確率は1/2。
おまけ
def tossup
rand(2)*2-1
end
0651デフォルトの名無しさん
NGNGswap(arr[i], arr(rand(length(arr))));
0652デフォルトの名無しさん
NGNGdef hist(n,k)
a, h = 1..n, Hash.new(0)
(a.inject{|i,j|i*j}*k).times{ h[yield(a)]+=1 } ; h
end
n, k = (ARGV[0]||3).to_i, (ARGV[1]||100).to_i
h = hist(n,k){|a|a.sort{rand-0.5}}
h.sort_by{|i,j| [j*10/k,i]}.each{|i| p i}
>>650 スマン、最後はselection sortってどういうこと?
それは抜きにしても左右に振られるのがランダムであることから
等確率であることをいうのは飛躍が大きいと思われ。
0653デフォルトの名無しさん
NGNG0654デフォルトの名無しさん
NGNG0655デフォルトの名無しさん
NGNG0656デフォルトの名無しさん
NGNG> >>650 スマン、最後はselection sortってどういうこと?
勘違い。ruby_qsort()は切替えたりしてないな。
> それは抜きにしても左右に振られるのがランダムであることから
> 等確率であることをいうのは飛躍が大きいと思われ。
というか、順次比較して行くから等確率じゃないな。
0657デフォルトの名無しさん
NGNG>>643の場合、停止確率は1だが停止しない場合もあると言いたかったんだろう。
それならば正しい。
しかし>>647は間違いだな。確率0の事象を実際にみることはないに等しい。
0658デフォルトの名無しさん
NGNG>>643については正しいが、確率1だからといって見ることができるとは限らないので
「確率0の事象を実際にみることはないに等しい」は言い過ぎかと。
class Array
def shuffle!()_=self;1.upto(size-1){|i|j=rand(i+1);_[i],_[j]=_[j],_[i]};_ end
def shuffle() o = dup ; o.shuffle! ; o end
def sorted?() empty? or !! inject{|i,j| i <= j ? j : break} end
def bogosort!() until sorted? do shuffle! end ; self end
def bogosort() o = dup ; o.bogosort! ; o end
end
100.times do |i|
STDERR.printf("%2d: ", i)
a = (1..i).to_a.shuffle ; t0 = Time.now ; b = a.bogosort ; t1 = Time.now
STDERR.printf("%f sec [%s] --> [%s]\n", t1-t0, a.join(","), b.join(","))
end
0659デフォルトの名無しさん
NGNG> というか、順次比較して行くから等確率じゃないな。
それも明らかじゃないと思う。難しい。
0662デフォルトの名無しさん
NGNG0663デフォルトの名無しさん
NGNGttp://rrr.jin.gr.jp/doc/http-access2/
の rdoc の出力は、rdoc-0.9.0 の標準 (Squeak のクラスブラウザみたいに、上半分に
クラス階層やメンバが表示されているやつ) とは違って、左半分にクラス階層やメンバが
表示されているんだけど、
これって rdoc の CVS 版使うとこうなるのかな?誰か知っている人いますか?
0664663
NGNGすいません、自己解決しました。
ttp://rrr.jin.gr.jp/doc/Makefile
をみたら、--template kilmer っていうオプションが rdoc にあるみたいね。
0665デフォルトの名無しさん
NGNGそれ以外では偽という条件を書くとき、
if str=='aaa' || str=='bbb' || str=='ccc' then
...
end
としているのですが、もっとうまい書き方はありますか?
case str
when 'aaa', 'bbb', 'ccc'
...
end
でもよかったんだけど、if修飾子としても使いたいので
できればif文での書き方を希望。
0666デフォルトの名無しさん
NGNGRubyスレをあげないでください。
0667デフォルトの名無しさん
NGNGif %(aaa bbb ccc).include?(str)
0668667
NGNGif %w(aaa bbb ccc).include?(str)
0669デフォルトの名無しさん
NGNGなるほど、配列の要素として含むかどうかで判断するのね。
ちなみにこれ、実行するたびに配列が作成されるのかな?
erubyやmod_rubyで使用すると、実行するたびにオブジェクトが
増えてしまう?
(仕方ないか)
0670667
NGNG実行のたびに配列は生成されちゃうだろうね。
それがいやだったら、配列を定数に入れとくとか。
ifの評価が終わったら参照されない配列になるから、
gcされちゃうんで増え続けることはないだろう。
0671デフォルトの名無しさん
NGNGif /\A(?:aaa|bbb|ccc)\z/ =~ str
0672669
NGNGいろんなやりかたがあるのね。
0673デフォルトの名無しさん
NGNGなるほど。正規表現のリテラルだったら毎度同じオブジェクトなのか。
$ ruby -e '2.times do p /hoge/.id end'
538146270
538146270
$ ruby -e '2.times do p ["hoge"].id end'
538146160
538146130
VALUE * を使い回す話とごっちゃになってた。
0674デフォルトの名無しさん
NGNG> VALUE * を使い回す話とごっちゃになってた。
何それ?
0675デフォルトの名無しさん
NGNGたぶんC言語レベルでのソースコードの話。
VALUEって型があって、それへのポインタのことでは?
0676デフォルトの名無しさん
NGNGそうとも限らないんだけどね。
ruby -e '2.times do |i| p /mona/.id end'
ruby -e '2.times do |i| p /#{i}/.id end'
ruby -e '2.times do |i| p /#{i}/o.id end'
0677デフォルトの名無しさん
NGNG0678デフォルトの名無しさん
NGNG0679デフォルトの名無しさん
NGNGそれは分かるんだけど、「使い回す」ってのが何の話だかが。
0680デフォルトの名無しさん
NGNG# 最近fj.lang.cでフレームになってたような気もするが。
0681デフォルトの名無しさん
NGNG0682デフォルトの名無しさん
NGNG0683デフォルトの名無しさん
NGNG0684デフォルトの名無しさん
NGNG0685デフォルトの名無しさん
NGNG0686山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0687デフォルトの名無しさん
NGNGにあるグラフはどっからのデータのグラフなんだ
もしかしてmatzが主観で書いたグラフか?
0688デフォルトの名無しさん
NGNG0689デフォルトの名無しさん
NGNGRubyからアクセスしたいのですが、どうしたらいいでしょうか。
0690デフォルトの名無しさん
NGNGlist = `"zipinfo #{archive}"`.split(/\n/)[1...-1]
0691デフォルトの名無しさん
NGNGArray#uniq も比較関数をブロックで渡せたら…と思いませんか?
0692デフォルトの名無しさん
NGNG思わないなぁ。めんどくさいと思うよ。
それなら俺様 uniq を作った方が早いと思う。
0693デフォルトの名無しさん
NGNGどうも。
書庫内のファイルの中身も見たいので、DLLのAPIヘルプを見ているところです。
0694デフォルトの名無しさん
NGNG環境はWindowsなのか?
なら「Ruby+統合アーカイバ+DLL」でぐぐるとなんか出てくる。
zlibを使ったRubyZipってのもあったはず。
0695デフォルトの名無しさん
NGNG0696デフォルトの名無しさん
NGNG情報どうもです。いろいろ試してみます。
0697デフォルトの名無しさん
NGNG0698デフォルトの名無しさん
NGNG遅延評価に対応した ruscheme というのを試してみたいのですが、
どこかダウンロード可能なところは無いでしょうか?
0699デフォルトの名無しさん
NGNGぐぐれ。ちなみに綴りが間違ってる。 Rucheme だ。
0700デフォルトの名無しさん
NGNGrucheme003 はまだ遅延評価に対応していないみたいなんです。
もっと新しいのはダウンロードできないんでしょうか?
0701デフォルトの名無しさん
NGNG頼 む か ら ソ ケ ッ ト の g e t c で デ ッ ド ロ ッ ク す る の 直 し て く れ
これじゃネットワーク全然使えねーよ
0702デフォルトの名無しさん
NGNG再現出来る短いコードを書き環境を明示して晒してみたら?
0703デフォルトの名無しさん
NGNGでもスレッドは止まる。timeoutも効かん。
再現?簡単だYO!
TCPServerとTCPSocketで試してみ。
ソケットオープソ
↓
接続
↓
getc (getsでもreadでも何でもいいが)
↓
受信データを送らない
↓
あぼーん
0704デフォルトの名無しさん
NGNGだから、再現コードと再現環境を晒せっての。
どんなコードや環境でも再現するようなら
今頃 Ruby なんか使ってる香具師なんかいねえよ。
0705デフォルトの名無しさん
NGNGワカタ。ゴメン。ちょと待ってろ
0706703
NGNG書き込めねえよ
でけえとかなげぇとか言うなよ
>>704スマソ
環境だけ書かせてもらうわ
Ruby1.6.8 無印とCVS版200304全般
mswin32、mingwは全滅。Cygwinは送信だか受信のどっちか×だった。
1.8pre2のLinux版では問題なし。
0707デフォルトの名無しさん
NGNGこれってまだ直ってないんだっけ
0708703
NGNG0709デフォルトの名無しさん
NGNG> mswin32、mingwは全滅。
winsockの呼び出しは中断できないから。
ついでにいっとくと、Windows対応はまつもとさんにいっても無意味。
0710デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています