[#34204] 「プログラミング Ruby 」 p.257 defined? はメソッド? — Noritsugu Nakamura <nnakamur@...>

15 messages 2002/03/05
[#34205] Re: 「プログラミング Ruby 」 p.257 defined? はメソッド? — nobu.nakada@... 2002/03/05

なかだです。

[#34244] しぶらぐっ議事録。 — rubiben <ozaki@...>

48 messages 2002/03/08
[#34246] Re: しぶらぐっ議事録。 — rubikitch <rubikitch@...> 2002/03/08

From: rubiben <ozaki@ruby-lang.org>

[#34250] Re: しぶらぐっ議事録。 — Minero Aoki <aamine@...> 2002/03/09

あおきです。

[#34448] 文字コード混在スクリプトの実行 — Noritsugu Nakamura <nnakamur@...>

14 messages 2002/03/16

[#34453] カレンダー文字列を作るメソッド — Take_tk <ggb03124@...>

たけ(tk)です。

13 messages 2002/03/16

[#34534] スクリプティング言語における GPL — Taku Nakajima <tnakajima@...>

中島@ブレーンです。

26 messages 2002/03/21

[#34552] Re: 1.7 に関して — "井上 浩一" <kyoui32@...>

井上です。

22 messages 2002/03/22
[#34556] Re: 1.7 に関して — "U.Nakamura" <usa@...> 2002/03/22

こんにちは、なかむら(う)です。

[#34590] Ruby FAQ (Re: 1.7 に関して) — TAKAHASHI Masayoshi <maki@...> 2002/03/22

高橋征義です。

[#34570] cgi.rb+ イテレータ — FUJIOKA Takeyuki <fujioka@...>

藤岡です。

15 messages 2002/03/22

[#34676] 安心できる Marshal と、 Ruby バージョンの検査法 — MALTA Koji <malta@...>

丸田と申します。

62 messages 2002/03/30
[#34678] Re: 安心できる Marshal と、 Ruby バージョンの検査法 — Koji Arai <JCA02266@...> 2002/03/31

新井です。

[#34682] Ruby バージョンの検査法 — MALTA Koji <malta@...> 2002/03/31

丸田です。 MarshalとRUBY_VERSIONの話題を分離します。

[#34694] Re: Ruby バージョンの検査法 — WATANABE Hirofumi <eban@...> 2002/04/01

わたなべです。

[#34695] Re: Ruby バージョンの検査法 — shukaku@... 2002/04/01

At Mon, 1 Apr 2002 16:06:23 +0900,

[#34697] Re: Ruby バージョンの検査法 — WATANABE Hirofumi <eban@...> 2002/04/01

わたなべです。

[#34714] Re: Ruby バージョンの検査法 — MALTA Koji <malta@...> 2002/04/01

丸田です。

[#34719] Re: Ruby バージョンの検査法 — HIDAKA Takahiro <cv8t-hdk@...> 2002/04/02

 ひだかです。

[#34738] Re: Ruby バージョンの検査法 — MALTA Koji <malta@...> 2002/04/02

丸田です。

[#34743] Re: Ruby バージョンの検査法 — matz@... (Yukihiro Matsumoto) 2002/04/02

まつもと ゆきひろです

[#34748] Re: Ruby バージョンの検査法 — "NAKAMURA, Hiroshi" <nakahiro@...> 2002/04/03

なひです。

[#34760] Re: Ruby バージョンの検査法 — Koji Arai <JCA02266@...> 2002/04/03

新井です。

[#34765] Re: Ruby バージョンの検査法 — "U.Nakamura" <usa@...> 2002/04/04

こんにちは、なかむら(う)です。

[#34776] Re: Ruby バージョンの検査法 — Tanaka Akira <akr@...17n.org> 2002/04/04

In article <20020404095542.7155.USA@osb.att.ne.jp>,

[#34681] 書籍に関する質問です — Nobuhide Kanagawa <nobuhide@...>

こんにちわ。

17 messages 2002/03/31

[ruby-list:34532] processing arrays in a hash by loop or iteration

From: takano noriyuki <noriyuki@...>
Date: 2002-03-21 03:34:00 UTC
List: ruby-list #34532
はじめて投稿します、高野と申します。

下に添えたスクリプトを試したところ、どうも納得しにく
い結果を得ましたので相談したく思います。
アドバイスをいただけると助かります。

高野のりゆき
Ragnar Granit Instituutti, Tampereen Teknillinen Korkeakoulu.
Ragnar Granit Institute, Tampere Univ. of Tech., Tampere, Finland.

やりたかった事:
コマンドラインに書くオプションをハッシュから作る
例として、
ハッシュ h={'str'=>["aaa", "bbb"], 'n0'=>[0, 1], 'n1'=>[-10, -11]}
から文字列 '--aaa 0 -10 --bbb 1 -11' をつくる。

困ったこと:
自分にとっては、直感的には以下のスクリプトのwhile、for、
collect、each、どの方法でも同じ結果が得られるものと思っ
ていたのですが、期待したとおりの結果はwhileでしか 得られ
ず、他のケースはなぜ違った結果になったのかも分かりま
せん。自分にとって、書きやすさ読みやすさが一番
なのはcollectを使ったものなので、それが使えないのは
残念。

試したスクリプト(ruby 1.6.7 (2002-03-01) [i686-linux]で実行):
h={'str'=>["aaa", "bbb"], 'n0'=>[0, 1], 'n1'=>[-10, -11]}
# determine the mininum number of elements, n
# it must be 2 now
n=h.keys.collect{|k| h[k].length}.min

p "first elements,  --#{h['str'][0]} #{h['n0'][0]} #{h['n1'][0]}"
p "second elements, --#{h['str'][1]} #{h['n0'][1]} #{h['n1'][1]}"

byWhile = []
i = 0
while i < n
  begin
    byWhile.push("--#{h['str'][i]} #{h['n0'][i]} #{h['n1'][i]}")
    i += 1
  end
end
puts 'by while, ' + byWhile.join(' ')

byFor = []
for i in [0...n]
  byFor.push("--#{h['str'][i]} #{h['n0'][i]} #{h['n1'][i]}")
end
puts 'by for, ' + byFor.join(' ')

byCollect = [0..n].collect{|i|
  "--#{h['str'][i]} #{h['n0'][i]} #{h['n1'][i]}"
}
puts 'by collect, ' + byCollect.join(' ')

byEach = []
[0..n].each{|i|
  byEach.push("--#{h['str'][i]} #{h['n0'][i]} #{h['n1'][i]}")
}
puts 'by each, ' + byEach.join(' ')

結果:
"first elements,  --aaa 0 -10"
"second elements, --bbb 1 -11"
by while, --aaa 0 -10 --bbb 1 -11
by for, --aaabbb 01 -10-11
by collect, --aaabbb 01 -10-11
by each, --aaabbb 01 -10-11


In This Thread

Prev Next