Ruby初心者質問スレPart1
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
NGNG雑談、ML・blogウオッチはこちらでどうぞ。
むーんうるふ Part13 【Rubyについて】
http://pc5.2ch.net/test/read.cgi/tech/1100533226/
Ruby Home Page
http://www.ruby-lang.org/ja/
前スレ - Rubyについて Part 12
http://pc5.2ch.net/test/read.cgi/tech/1100199861/
0932デフォルトの名無しさん
05/02/03 13:21:49orig = [10, 1, 3, 0]
sorted = orig.sort
sorted.each{|e|
p orig.index(e)
}
じゃだめなの?
origIndx = {}
orig.each_with_index{|e, i|
origIndx[e] = i
}
sorted.each{|e|
p origIndx[e]
}
とか
0933デフォルトの名無しさん
05/02/03 13:26:440934デフォルトの名無しさん
05/02/03 13:46:10重複があったときは大丈夫?
0935デフォルトの名無しさん
05/02/03 13:50:42a.zip((0...a.length).to_a).sort { |x, y| x[0] <=> y[0] }
0936デフォルトの名無しさん
05/02/03 14:00:00いけました!!
大分すっきりしました。
def get_sort_rank_indexes(array)
tmp = []
array.each_with_index do |item, index|
tmp.push([item, index])
end
tmp.sort!{|b, a| a[0] <=> b[0]}
tmp.each_with_index do |item, index|
tmp[index] = item[1]
end
end
p get_sort_rank_indexes([10, 1, 1, 3, 0])
>>932
すみません。
[10, 1, 1, 3, 0]みたいな同数も、考慮しないといけないのでした。
0937デフォルトの名無しさん
05/02/03 14:07:14Enumerable#zip使うのですね。盲点でした
def get_sort_rank_indexes(array)
tmp = array.zip((0...array.length).to_a).sort { |y, x| x[0] <=> y[0] }
tmp.each_with_index { |item, index| }
tmp[index] = item[1]
}
end
p get_sort_rank_indexes([10, 1, 1, 3, 0])
0938デフォルトの名無しさん
05/02/03 14:24:27def get_sort_rank_indexes(array)
array.zip((0...array.length).to_a).sort { |y, x| x[0] <=> y[0] }.map{|a|a[1]}
end
で
0939デフォルトの名無しさん
05/02/03 14:43:53def get_sort_rank_indexes(array, &b)
array.zip((0...array.length).to_a).sort { |x, y| (b)? b.call(x[0], y[0]) : x[0] <=> y[0] }.map{|a|a[1]}
end
0940デフォルトの名無しさん
05/02/04 01:05:04「Invalid argument (Errno::EINVAL)」エラー出ません?
これだと動くんですけど、サイズを+1するとエラー出ます。
require "socket"
s = TCPSocket.open( 'localhost', 18181 )
sz = 1024 * 228 - 560
bn = ( "\0" * sz )
s.write( bn )
s.close
環境はw2k sp4、ruby 1.8.2 (2004-12-25) [i386-mswin32]です。
knoppix_v3.7_20041208-20050125に収録されてるrubyで試したら
問題なく動きました (´・ω・`)
0941デフォルトの名無しさん
05/02/04 08:48:52すげー
それいただきます
0942デフォルトの名無しさん
05/02/04 09:25:12wxp sp2で試したけど、特に問題はないね。
w2kのせいかな?
0943デフォルトの名無しさん
05/02/04 13:38:100944デフォルトの名無しさん
05/02/04 16:03:22知らない人も多いからCPANのリンク貼らないと答えにくいと思うっすよ。
http://search.cpan.org/dist/MLDBM/
0945デフォルトの名無しさん
05/02/04 16:31:38てるのかも。
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=PStore
0946デフォルトの名無しさん
05/02/04 20:43:08サンクス。1.8.1では 1024 * 228 - 1 が境界だったんですよ。
だからrubyの問題だと思ったんですけど、w2kか僕の環境が
問題なんでしょうね。今はこうやってしのいでます。
class BasicSocket
alias _w_i_n_3_2_write write
def write( iBin )
oLength = 0
sz = 1024 * 16
( 0...iBin.length ).step( sz ) do |i|
oLength += self._w_i_n_3_2_write( iBin[ i, sz ] )
end
oLength
end
end
0947デフォルトの名無しさん
05/02/05 12:09:040948デフォルトの名無しさん
05/02/05 12:39:55ん?Arrayの内容も含めて丸ごと複製するということですか?
Marshal.dumpやMarshal.restoreを使うという方法は?
0949デフォルトの名無しさん
05/02/05 13:30:38これは重そうだな・・・
シャロウコピー(clone)の代入バージョンはあるの?
0950デフォルトの名無しさん
05/02/05 15:12:24意味がわからない。
0951デフォルトの名無しさん
05/02/05 18:07:15Marshalを使う以外に汎用的にディープコピーをする手段はないと思う。
あと代入はオブジェクトに新たなラベルをつけるという意味しかもたないから、
コピーも何もしないよ。代入はオブジェクトの操作ではない。
だからシャロウコピーの代入バージョンなんてものは存在できない。
0952デフォルトの名無しさん
05/02/05 20:54:00「既にインスタンスが二つある場合」が通じてないと思われ
0953948 ◆m7YeytgDFE
05/02/05 21:31:28a = '2ch'
b = [ a ]
...のように"インスタンスが2つある場合"に、
それらを丸ごと複製する方法についての質問だと理解しました。
もしかしてとっかかりから誤解してますかね?
0954デフォルトの名無しさん
05/02/05 22:22:010955デフォルトの名無しさん
05/02/05 22:30:28b = Foo.new
a.setBarBaz
b.deepCopy(a)
つうことじゃないのか
0956教えて君
05/02/06 07:56:250957& ◆6g4XpN.URU
05/02/06 08:02:05ruby setup.rb
しましたが、使えません。(インストールできない)
どうして
0958デフォルトの名無しさん
05/02/06 08:12:12できません
>>957
ruby は入れたか?
0959デフォルトの名無しさん
05/02/06 08:57:45raccが必要だったと思ったが、その辺どう?
0960デフォルトの名無しさん
05/02/06 09:51:25最近ではそういう仕様になってるのか?
昔のExerbでは、ちゃんとApolloをphi.soごと固められたはずだが
0961デフォルトの名無しさん
05/02/06 10:59:48次のようなエラーが出て解決できません。
alexandriaのホームページへいってもわかりません。
なにがいけないのでしょうか?
Alexandria just crashed
-----------------------
Timestamp: 日 2月 06 10:50:40 JST 2005
Message: undefined method `map' for nil:NilClass
Backtrace:
/usr/lib/site_ruby/1.8/alexandria/book_providers.rb:146:in `update_priority'
/usr/lib/site_ruby/1.8/alexandria/book_providers.rb:142:in `initialize'
/usr/lib/site_ruby/1.8/alexandria/book_providers.rb:18:in `new'
/usr/lib/site_ruby/1.8/alexandria/book_providers.rb:18:in `new'
以下中略
/usr/bin/alexandria:10
Release: 0.4.0
Uname -a: Linux localhost.localdomain 2.6.9-1.667smp #1 SMP Tue Nov 2 14:59:52 EST 2004 i686 i686 i386 GNU/Linux
--
Please report this dump to '[email protected]' with some additional
information, such as the description of the crash and the steps to reproduce it
(if it's possible).
0962デフォルトの名無しさん
05/02/06 14:31:58インストールできないじゃ状況がよくつかめんが・・・。
raccを解凍して
> ruby setup.rb install
rdtoolを解凍して
> ruby setup.rb install
その後、rd/dot.rd2rcがないぞって怒られれたから
rdtoolのlibの下にあるdot.rd2rcをrd/にコピーした。
うちはそれで動いてるよ。
0963デフォルトの名無しさん
05/02/06 14:41:36いや、できるはずだが。
少し前のバージョンは問題なかった。
phi.so以外の拡張ライブラリのバイナリを突っ込んだらエラーになる場合はあるかも知れないが。
0964デフォルトの名無しさん
05/02/06 15:11:47とりあえず初心者の質問じゃないと思うので、できればAlexandriaの開発者とやりとりするか
そっちのMLに入って話を汁。でなきゃRuby本スレにでも行くべし。
エラーの意味としては、mapというメソッドを持ったオブジェクトが
入っている必要がある変数にnilが入ってしまっている。
あとは中身見ないとわからんだろう。ちなみに以下の条件は満たしているか?
Requirements
------------
Ruby >= 1.8.0
GNOME >= 2.6
Ruby/Amazon >= 0.8.3
Ruby-GetText >= 0.6.1
Ruby-GNOME2 >= 0.10.1 [*]
[*]: Required libraries are: Ruby/Libglade2, Ruby/Gnome2, Ruby/GdkPixbuf2
and Ruby/GConf2.
0965デフォルトの名無しさん
05/02/06 16:16:44ありがとうございます。
Requirementは、満たしております。
他で聞いて見ます。
0966デフォルトの名無しさん
05/02/06 20:03:020967デフォルトの名無しさん
05/02/06 20:11:100968デフォルトの名無しさん
05/02/06 20:30:33わりとするり、と理解できた(ような気になった)漏れは特殊なのか。
0969& ◆or0XnlxUXQ
05/02/06 20:50:51ありがとうございます。
ruby setup.rb install
の 「install」 が抜けていました。 ^^;
ところで、 ruby 1.8.2(Apollo Version) でも racc は
別途インストールする必要があるでしょうか。
0970デフォルトの名無しさん
05/02/06 22:33:38俺が見た資料には「あったほうがよい」のような意味合いに書いて
あったな。実際は別途インストールしなきゃ動いてくれんかったが。
0971デフォルトの名無しさん
05/02/06 23:34:46説明読んでただけじゃよくわからなくて、
チュートリアルだかにあったコードをいじくってみて
「なーんだ、コールバックじゃん」とすぐに理解できたな。
0972デフォルトの名無しさん
05/02/06 23:36:280973デフォルトの名無しさん
05/02/07 00:03:15むぅ。それはまったくもってそのとおり。
0974デフォルトの名無しさん
05/02/07 02:59:38そりゃ使う側だろう…。eachメソッドが定義されていてそいつがイテレータを取るならば、
forメソッドが適用できるって事だ。each以外のイテレータはどうすんの?
イテレータを定義したりしない?(しないんだろうな)
0975デフォルトの名無しさん
05/02/07 03:01:200976デフォルトの名無しさん
05/02/07 03:13:410977デフォルトの名無しさん
05/02/07 09:43:020978デフォルトの名無しさん
05/02/07 09:44:440979デフォルトの名無しさん
05/02/07 11:30:350980デフォルトの名無しさん
05/02/07 21:05:33消費具合からみてここで医院で内科医?
http://pc5.2ch.net/test/read.cgi/tech/1106572657/
0981デフォルトの名無しさん
05/02/08 00:45:13調子に乗ってjava.sql.ResultSetにもeachを後付けしようとしてできない漏れは負け組
つーかヒネクレモノ
0982デフォルトの名無しさん
05/02/08 03:03:59http://pc5.2ch.net/test/read.cgi/tech/1107799347/
レス数が950を超えています。1000を超えると書き込みができなくなります。