5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Ruby初心者スレッドPart6

1 :980:2006/05/18(木) 11:09:57
プログラミング言語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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。


宗教的な話題は禁止します。


2 :デフォルトの名無しさん:2006/05/18(木) 11:12:07
#本スレ
Rubyについて Part 22
http://pc8.2ch.net/test/read.cgi/tech/1147897915/

#関連スレ
【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/

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


3 :デフォルトの名無しさん:2006/05/18(木) 11:13:45
#関連リンク

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

リファレンス
http://www.ruby-lang.org/ja/man/
http://www.ruby-doc.org/ (英語)

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

Programming Ruby - The Pragmatic Programmer's Guide … 書籍をまるごと公開
http://www.ruby-doc.org/docs/ProgrammingRuby/

RAA - Ruby Application Archive … Rubyのアプリやライブラリが検索できる
http://raa.ruby-lang.org/

RubyForge … sourceforge.netのRuby特化版
http://www.rubyforge.org

日本Rubyの会 公式Wiki - 日本Rubyの会Wiki … Ruby関連のニュースとか
http://jp.rubyist.net/

Rubyist Magazine - るびま … RubyのWebマガジン
http://jp.rubyist.net/magazine/

4 :デフォルトの名無しさん:2006/05/18(木) 11:15:50
#関連リンク

Matzにっき … Ruby作者の日記
http://www.rubyist.net/~matz/

Ruby hotlinks 五月雨版 … Ruby関連の日記やblog
http://www.rubyist.net/~kazu/samidare/

Rubyの本一覧
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Ruby%A4%CB%B4%D8%A4%B9%A4%EB%BD%F1%C0%D2

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

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

5 :デフォルトの名無しさん:2006/05/18(木) 11:21:09
>>2 訂正

#過去ログ
Ruby初心者質問スレPart1
http://pc5.2ch.net/test/read.cgi/tech/1100534824/ (行方不明)
Ruby初心者質問スレPart2
http://pc8.2ch.net/test/read.cgi/tech/1107799347/
http://makimo.to/2ch/pc8_tech/1107/1107799347.html
Ruby初心者質問スレPart3
http://pc8.2ch.net/test/read.cgi/tech/1125587131/
http://makimo.to/2ch/pc8_tech/1125/1125587131.html
Ruby初心者スレッドPart4
http://pc8.2ch.net/test/read.cgi/tech/1137927749/
http://makimo.to/2ch/pc8_tech/1137/1137927749.html
Ruby初心者スレッドPart5
http://pc8.2ch.net/test/read.cgi/tech/1143403165/
http://makimo.to/2ch/pc8_tech/1143/1143403165.html

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

#関連スレ
【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/

6 :デフォルトの名無しさん:2006/05/18(木) 11:24:23
華麗にgets
>>1

7 :デフォルトの名無しさん:2006/05/18(木) 11:30:14
>>1

8 :デフォルトの名無しさん:2006/05/18(木) 11:34:47
◎技術系MLでの質問方法
http://www.hyuki.com/writing/techask.html#direct

◎RubyってEXE形式にできますか?

Exerb
http://exerb.sourceforge.jp/

RubyScript2Exe (A Ruby Compiler)
http://www.erikveen.dds.nl/rubyscript2exe/index.html

◎ActiveScriptRuby
お前ら、wsh使ってますか? part5
http://pc8.2ch.net/test/read.cgi/win/1126543183/

◎多分Wikiの話はWebProg板向きの話題
WEBプログラミング@2ch掲示板
http://pc8.2ch.net/php/

◎前回の祭り
TMTOWTDI(一つ目の質問とその答えを参照せよ。)
http://slashdot.jp/developers/03/03/14/0258247.shtml?topic=86
ヒューメイン・インタフェース
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?HumaneInterface

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/133347
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/133505
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/7968
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/7980
http://wiki.rubygarden.org/Ruby/page/show/Irb/TipsAndTricks


9 :デフォルトの名無しさん:2006/05/18(木) 11:51:41
前スレの収穫?

ttp://jp.rubyist.net/magazine/?0014
ttp://chem.tf.chiba-u.jp/~shin/tutorial/
ttp://elbereth-hp.hp.infoseek.co.jp/ruby.html
ttp://www.amazon.co.jp/gp/product/4797314087/
ttp://www.amazon.co.jp/gp/product/4894714531/
ttp://www.seshop.com/detail.asp?pid=3585
ttp://www.notwork.org/rubyrecipebook/
ttp://www.shiro.dreamhost.com/scheme/trans/being-popular-j.html
ttp://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=Bruce+Eckel%A4%CE%A1%D6Ruby%A4%CB%A5%A4%A5%A4%A5%BF%A5%A4%A5%B3%A5%C8%A1%D7%A5%B3%A1%BC%A5%CA%A1%BC
ttp://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E9%96%A2%E6%95%B0
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby%A5%EA%A5%D5%A5%A1%A5%EC%A5%F3%A5%B9%A5%DE%A5%CB%A5%E5%A5%A2%A5%EB
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=%A5%DE%A5%CB%A5%E5%A5%A2%A5%EB%A5%C0%A5%A6%A5%F3%A5%ED%A1%BC%A5%C9
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=FAQ%3A%3A%C6%FC%CB%DC%B8%EC%A4%CE%BC%E8%A4%EA%B0%B7%A4%A4
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=FAQ%3A%3A%C6%FC%CB%DC%B8%EC%A4%CE%BC%E8%A4%EA%B0%B7%A4%A4#a10.2e6.20.a4.d2.a4.e9.a4.ac.a4.ca.a4.f2.a5.bd.a1.bc.a5.c8.a4.b9.a4.eb.a4.cb.a4.cf.a4.c9.a4.a6.a4.b7.a4.de.a4.b9.a4.ab
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby%CD%D1%B8%EC%BD%B8
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=Array#collect
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=YAML;em=yaml
ttp://shakenbu.org/yanagi/d/20050214.html#p02
ttp://d.hatena.ne.jp/fbis/20060504/1146736766



10 :デフォルトの名無しさん:2006/05/18(木) 11:54:09

ttp://rubyforge.org/projects/win32utils/

ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/99508
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/99540

ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shfileoperation.asp

ttp://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-list/40890?40768-41017

ttp://homepage1.nifty.com/MADIA/vb/API/SHFileOperation.htm
ttp://msdn2.microsoft.com/ja-JP/library/5fbah944(VS.80).aspx

http://pc8.2ch.net/test/read.cgi/tech/1016362068/

ttp://age.s22.xrea.com/talk2ch/
ttp://rbt.sakura.ne.jp/kana/torikomi

ttp://www.cozmixng.org/~rwiki/?cmd=view;name=RSS+Parser

ttp://i.loveruby.net/w/RubyExtensionProgrammingGuide.html

ttp://diary.lampetty.net/20050110.html#p02


11 :デフォルトの名無しさん:2006/05/18(木) 14:37:07
>>1乙華麗

12 :デフォルトの名無しさん:2006/05/18(木) 18:32:02
CGI#out の文字コード変換だけど、
charset が iso-2022-jp, euc-jp, shift_jis の場合は
元の content が「日本語」で書かれていると想定できるから
アレで良いかも知れないけど、
charset が utf-8 の場合は、
元の content が何語で書かれてるか想定はできないので、
NKF で自動的に変換するのはまずくないかな。

13 :デフォルトの名無しさん:2006/05/18(木) 19:47:52
>>12
おれもちょうどcgi.rb見直してたとこなんだけど、outとかHTMLタグ生成関連って分離できねーの?
思ったより行数あるなーとおもったら、あれ取ったら半分以下になったよ。
cgi/http.rb
cgi/cookie.rb
cgi/html.rb
とかにわけて、cgi.rbはそいつらをrequireするだけにしてほしい。

14 :デフォルトの名無しさん:2006/05/18(木) 19:49:29
cgi.rbをrequireするからおなじことでわ?

15 :デフォルトの名無しさん:2006/05/18(木) 19:52:47
いらないときは必要な.rbだけ直呼びできるってことでわ?

16 :デフォルトの名無しさん:2006/05/18(木) 19:54:40
>>13
では早速やってください

17 :デフォルトの名無しさん:2006/05/18(木) 19:56:57
21/22/23は捨てスレ

ここが本スレってことで


18 :デフォルトの名無しさん:2006/05/18(木) 20:03:42
いやここは初心者スレだから
本スレの代用なんかに使われて、ここまで荒れたら困るよ

19 :デフォルトの名無しさん:2006/05/18(木) 20:19:30
>>16
つか今までだれも提案しなかったの?

20 :デフォルトの名無しさん:2006/05/18(木) 20:20:32
cgi.rb一個で足りる便利さのほうが支持を受けてたとかそんなとこでは

21 :デフォルトの名無しさん:2006/05/18(木) 20:22:41
cgi.rbはそいつらをrequireするだけのことでわ?

22 :デフォルトの名無しさん:2006/05/18(木) 20:43:23
>>16

23 :デフォルトの名無しさん:2006/05/19(金) 00:22:16
済みませんが、質問です。
ActiveRubyで、テキストファイルを一行位置ファイルに分割するプログラムを
書こうとしているのですが、改行コードをLFのみにすることが出来ません。出
来たファイルの改行コードは、すべてCR+LFになってしまいます。

count = 1
while gets
file_name = "hogehoge" + count.to_s + ".tsv"
foo = File::open("tsv/" + file_name, "w")
foo.print NKF.nkf('-Lu', $_)
foo.close
count += 1
end

どこが間違っているのでしょうか?


24 :デフォルトの名無しさん:2006/05/19(金) 00:32:58
binmode()

25 :デフォルトの名無しさん:2006/05/19(金) 00:38:41
ActiveRubyっつー事は、Windowsだよな?
Winでファイルへ書き込む場合"w"はテキストモードって言って
簡単に言うと改行コードとかをWinが自動で\r\n直してしまう。

"wb"って感じでbを付けて、バイナリモードにしなきゃ。

Rubyリファレンスマニュアル - 組み込み関数#open
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=%C1%C8%A4%DF%B9%FE%A4%DF%B4%D8%BF%F4#open
Rubyリファレンスマニュアル - Win32ネイティブ版Rubyの互換性問題
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=Win32%A5%CD%A5%A4%A5%C6%A5%A3%A5%D6%C8%C7Ruby%A4%CE%B8%DF%B4%B9%C0%AD%CC%E4%C2%EA

26 :デフォルトの名無しさん:2006/05/19(金) 00:51:17
既に答え出てるみたいだけど、サンプルとしてはこんな感じ
chompしたり"\n"つけたりしなきゃいかんのかなと思ったんだけど
何かこれでちゃんとLFだけになるみたい

require 'kconv'
ARGF.each_with_index do |line, i|
 filename = "hogehoge#{i}.tsv"
 open('tsv/' + filename, 'wb'){|f| f.print line.toutf8}
end


27 :デフォルトの名無しさん:2006/05/19(金) 01:17:31
モルモン教/教義への疑問点
http://www.geocities.co.jp/Bookend-Ohgai/6832/syk_sb2.html

カルト - Wikipedia
http://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%AB%E3%83%88
カルトの定義とだましのテクニック(蓮月)
http://www.jimmin.com/2000b/page_021.htm

新興宗教とは?
http://park8.wakwak.com/~kasa/Religion/prologue.html

28 :デフォルトの名無しさん:2006/05/19(金) 07:05:48
htmlをパースしてわびさび方式にしてくれるライブラリってありますか?

29 :デフォルトの名無しさん:2006/05/19(金) 07:21:33
>>28
htreeというライブラリがそれっぽいかと思ったけど違うかも。

30 :デフォルトの名無しさん:2006/05/19(金) 07:43:10
>>29
ども、できました。qwikのほうにhtree-to-wabisabiなんてのが入ってたんですね

31 :デフォルトの名無しさん:2006/05/19(金) 11:29:27
>>23,25
ActiveScriptRuby?
ActiveStateはrubyだしてないよな。

32 :23:2006/05/19(金) 11:37:09
>>24-26
できました!ありがとうございます。Rubyって本当に便利ですね。


33 :デフォルトの名無しさん:2006/05/19(金) 11:46:49
>>32
便利だけど質問と答えを見る限りは全く便利そうに見えないな。


34 :デフォルトの名無しさん:2006/05/19(金) 11:51:02
うむ
具体的にどうとは言えんがなんかあまり便利そうには見えん

35 :デフォルトの名無しさん:2006/05/19(金) 16:15:18
おまえら、急にw

36 :デフォルトの名無しさん:2006/05/19(金) 18:56:54
特定の範囲のテキストを処理したい場合はどうするのが普通なんでしょう?
<start>
中略
<end>
の用に囲まれている部分を抜き出したり置換する場合です。


37 :デフォルトの名無しさん:2006/05/19(金) 18:58:22
その範囲のテキストを抜き出してきたり置換したりするのが普通です。

じゃなくて、えーと、正規表現を使います、とかいう答えでいいのかな?

38 :デフォルトの名無しさん:2006/05/19(金) 19:26:48
>>37
抜き出し方が分からないんです

39 :デフォルトの名無しさん:2006/05/19(金) 19:54:45
"foo\n<start>\nbar\nbaz\n<end>\nquux".scan(/<start>\n(.*)<end>/m){p $1}

40 :デフォルトの名無しさん:2006/05/19(金) 19:55:58
>>38
ぜんぶ読み込んで、正規表現で抜き出す。
str = File.read('file.txt')
str.scan(/<start>(.*?)<end>/m) do
 matched = $1
 puts matched
end
あとは、一行ずつ読み込んで、開始パターンにマッチしたらフラグをたて、終了パターンにマッチしたらフラグをおろすという方法がある。


41 :デフォルトの名無しさん:2006/05/19(金) 20:40:01
>>39-40
ありがとうございます

ところでそういうブロックが同じ文章中にいくつもあって
2番目のブロックだけ処理したい場合がわかりません
最初の<start>と最後の<end>が対応してしまうような

42 :デフォルトの名無しさん:2006/05/19(金) 20:47:41
>>41
試してから書くべきではないか。

43 :デフォルトの名無しさん:2006/05/19(金) 21:04:19
# flip-flop
if (/^<start>$/=~$_)..(/^<end>$/=~$_)

44 :デフォルトの名無しさん:2006/05/20(土) 03:57:37
>>41
2番目のブロックというのが何をさしているのかわからない。
...<start>...<end>...<start>...<end>... のようになっているだけだったら、教えられた方法でできる。
...<start>...<start>...<end>...<end>... のように入れ子になっているんだったら、もうちょっと難しいやり方が必要。
ほんとうにやりたいことは何なのかをもっと詳しく。

45 :デフォルトの名無しさん:2006/05/20(土) 04:25:08
>>44
<start>
abcde

fghij
<end>

<start>
klmno

prqst
<end>
こういう内容の空行を含むtxtがあったとして
str = open("file.txt").read
str.scan(/<start>(.*?)<end>/m) {
matched = $1
puts matched
}
これだと
abcde

fghij

klmno

prqst
こう表示されるのですわ。

klmno

prqst
これだけあるいは最初のabcde〜だけを選択して抜き出せればってことなのですが。

46 :デフォルトの名無しさん:2006/05/20(土) 05:51:56
>>45
よくわからんが
i = 0
str.scan(/<start>(.*?)<end>/m) {
 i += 1
 matched = $1
 puts matched if i > 1
}
じゃだめなのか?

47 :デフォルトの名無しさん:2006/05/20(土) 07:22:41
scanにブロックを渡さず、ふつうに<start>〜<end>にマッチした文字列の配列を吐き出させて、ゆっくり料理すりゃいいじゃん。
マッチした文字列が<start>か<end>を含んでいたら、その要素は削除するとか。

48 :デフォルトの名無しさん:2006/05/20(土) 07:25:24
あ、マッチした文字列の途中に<start>か<end>があったら、に訂正。

49 :デフォルトの名無しさん:2006/05/20(土) 09:40:38
>>45
ひとつ。puts だとわけがわからなくなる。 p 使え。正規表現やってるときは特に。
もうひとつ。ブロックを使ってるときに「これの2番目に出てくるやつを…」とか考えるのは面倒なのでやめとけ。

str = open("file.txt").read
matchedarr=str.scan(/<start>(.*?)<end>/m)
p matchedarr

実行結果:
[["\nabcde\n\nfghij\n"], ["\nklmno\n\nprqst\n"]]


目的っぽいスクリプト:
str = open("file.txt").read
matchedarr=str.scan(/<start>.(.*?).<end>/m).flatten
puts matchedarr[1]


抜き出したいのが2番目かどうかは実は内容によって決まるとかいうなら
配列matchedarrに対してfindやgrep使って目的の要素探せ

50 :デフォルトの名無しさん:2006/05/20(土) 13:24:12
>>46-49
ども
45で書いたものの出力結果をどうにかして配列に入れようとしていたのですが
scanを使えばそのまま入ってくれるのですね
参考になりました。

51 :デフォルトの名無しさん:2006/05/21(日) 16:00:43
RDocで、行頭の * が<ul>、[ ] が<dl>になりますが、これをエスケープするにはどうしたらいいですか。
バックスラッシュをつけたら、そのバックスラッシュも表示されてしまいました。

52 :デフォルトの名無しさん:2006/05/21(日) 18:24:09
むきー!
Vine の Ruby は 1.8.2 のくせに Kconv::UTF8 が定義されてねぇぇぇーーーーー!!!

$ ruby --version
ruby 1.8.2 (2004-11-03) [i386-linux]

$ irb
irb(main):001:0> require "kconv"
=> false
irb(main):002:0> Kconv::EUC
=> 2
irb(main):003:0> Kconv::UTF8
NameError: uninitialized constant Kconv::UTF8
from (irb):3

なにこれ…。

53 :デフォルトの名無しさん:2006/05/21(日) 20:13:20
>>52
1.8.4をコンパイルしろというお告げではないか?

54 :デフォルトの名無しさん:2006/05/21(日) 21:34:21
>>52
そのRuby(多分 1.8.2 preview 2)にはまだKconv::UTF8がなかった、
というオチではないかと。
いずれにしろ最新版、せめて1.8.2にはしてもらったほうがいいと思う。


55 :デフォルトの名無しさん:2006/05/21(日) 21:51:10
Vine Linux の Ruby、
ruby --version は 1.8.2 ってでるけど
rpm -qi したら version 1.8.1 って書いてありました。


56 :デフォルトの名無しさん:2006/05/21(日) 21:56:55
VineのRubyは確かにそうなってた
VineSeedにしたら1.8.4になった

57 :デフォルトの名無しさん:2006/05/21(日) 22:31:43
面倒なバージョンがデフォになってんなあ

58 :デフォルトの名無しさん:2006/05/22(月) 01:10:47
>>51
試してないけど、実態参照か数値参照でやってみれ。

59 :デフォルトの名無しさん:2006/05/22(月) 01:14:51
>>52
そういえば、使わてもらってる鯖が Vine で困ったことがあったな。

60 :デフォルトの名無しさん:2006/05/22(月) 14:08:58
チラシの裏。

自分でがんばって作った便利スクリプトと同じか上等なサービスが既に展開されてるとなんか寂しい。
ヤッホーテレビ欄を取り込んで注目フレーズをgrepして自分用ページで表示するとかいうの作ってたら
ライブドア.comがなんか始めた。
ttp://tv.livedoor.com/rss/make_url

ヤッホー天気予報を取り込(中略)ライブドア.comがなんか始めた。
ttp://weather.livedoor.com/weather_hacks/ical.html

「気になるアーティストの曲がラジオでかかることがわかったら録音して曲近辺を切り出してBGMの完成」
とかいうこともやってるがこれはさすがのライブドアでも公開できまいやーいやーいグスン
ちなみに録音と切り出し行為自体は外部プログラムでRubyは全然関係ない

61 :デフォルトの名無しさん:2006/05/22(月) 16:25:47
チラシの裏ここまで

62 :デフォルトの名無しさん:2006/05/22(月) 17:49:57
適切なクラス名とインスタンス変数使ってデータ状態を表現するのと
適当な名前のハッシュ変数に適当な入れ子構造でデータ保持するのって
データ書き換えたり読み込んだりという点においてはあんまご利益変わらなくね?

63 :デフォルトの名無しさん:2006/05/22(月) 18:27:05
変数は単なるオブジェクトの器だからなあ。
どちらかというとその中身のほうが重要なんだが。


64 :デフォルトの名無しさん:2006/05/22(月) 19:22:17
構造の決まってるコンテナオブジェクトが何重にも入れ子になるような場合は、一個そんなクラスを作って再帰的定義する方がかっちょよくね?

65 :デフォルトの名無しさん:2006/05/22(月) 19:42:44
俺の知ってるクラスはそんな便利そうで超面白カッコいいぜなことはしてくれん(w

66 :デフォルトの名無しさん:2006/05/22(月) 20:04:30
便利機能は自分で定義しなきゃ。

例えば中身はただの配列なんだけど、頭からウン番目までの仕様が決まってるんだったら、そこの要素だけはメソッドでもアクセスできるとか、そんな程度を定義しとくだけでもあとあと楽できるよ。

67 :デフォルトの名無しさん:2006/05/22(月) 23:03:44
それってなんてStruct ?

68 :デフォルトの名無しさん:2006/05/22(月) 23:51:05
うにおn

69 :デフォルトの名無しさん:2006/05/23(火) 01:16:40
rubyでUNIXのgrep -vのような機能(正規表現にマッチしないパターンを出力する)を
作ってるんですが、どうすりゃいいかが思い浮かばないです。
とりあえず・・・
・OptionParserで-vを定義する
・ARGV.shiftでコマンドライン引数からパターンを抜き出す。
・パターンに[^hoge](hoge以外にマッチする正規表現)を前後からくっつける
って具合でやってるんですが、上手く行きません。Rubyじゃ[^]って使えないんでしたっけ?

70 :デフォルトの名無しさん:2006/05/23(火) 01:33:35
>>69
「うまくいかない」だけじゃ正直わかんないんだが、
Rubyに限らず[](character class)は底に含まれる文字の集合/補集合に
マッチするもんなんだけど、その辺勘違いしてるってことないか?

> ・パターンに[^hoge](hoge以外にマッチする正規表現)を前後からくっつける 

ここ読むとひじょーにアヤシイんだが。



71 :デフォルトの名無しさん:2006/05/23(火) 02:20:47
>>70
ええと、まず実装したいのは
Unixのgrep -vのような機能
・正規表現にマッチしない部分を出力
で、
http://www.ruby-lang.org/ja/man/?cmd=view;name=%C0%B5%B5%AC%C9%BD%B8%BD#a.ca.b8.bb.fa.a5.af.a5.e9.a5.b9
の文字クラスってあたりを読んだんですが・・・。

>>・パターンに[^hoge](hoge以外にマッチする正規表現)を前後からくっつける
>ここ読むとひじょーにアヤシイんだが。
正直自分でも、あやしいです。

require 'optparse'
patopts = 0
opt = OptionParser.new
opt.def_option("-i" , "case insensitive"){
patopts = Regexp::MULTILINE
}
opt.parse!
temp1 ="[^"
temp2 =".]$"
pattern = temp1 + ARGV.shift + temp2
p pattern
regexp = Regexp.compile(pattern,patopts)
ARGF.each{|line|print line if (regexp =~ line)
}
なんか分からなくて、無理矢理やってる感が。。。

72 :デフォルトの名無しさん:2006/05/23(火) 02:54:00
[^hoge]は
e, g, h, o の4文字のどれにも当てはまらない文字にマッチするよ

73 :デフォルトの名無しさん:2006/05/23(火) 02:56:09
[^hoge]は
e, g, h, o のどれにも当てはまらない文字
にマッチ

74 :デフォルトの名無しさん:2006/05/23(火) 06:18:56
>>69
試してないけどこんなんでいいんじゃない?

pattern = ARGV.shift
regexp = Regexp.new(pattern)

while line = gets()
 print line unless line =~ regexp
end


75 :デフォルトの名無しさん:2006/05/23(火) 07:05:52
車輪の再発明することないとおもうけどな

76 :デフォルトの名無しさん:2006/05/23(火) 07:06:37
>>74
それだと改行越えするときに問題起きる

77 :デフォルトの名無しさん:2006/05/23(火) 09:17:16
>>76
kwsk

78 :デフォルトの名無しさん:2006/05/23(火) 09:49:33
IronRubyキタ
http://wilcoding.xs4all.nl/Wilco/View.aspx?NewsID=193

79 :デフォルトの名無しさん:2006/05/23(火) 09:52:47
mjk

80 :デフォルトの名無しさん:2006/05/23(火) 15:03:04
>>76
grep -v を実装したいんでしょ?だったら行ごとでよくね?なんで改行越えが問題になるの。

・・・と思ったけど、エスパー発揮してみた。
以下は「hogehoge」以外の部分を出力するスクリプト。

str = ARGF.read()
str.scan(/(.*)hogehoge/m) do
 unmatched = $1
 print unmatched
end
rest = $'
print rest if rest


81 :デフォルトの名無しさん:2006/05/23(火) 16:59:39
ハッシュオブジェクトのテストってどうするのが賢いですか。
今はinspectで文字列にしてからassert_equal()しているんですけど、
なにかの拍子でinspectの結果がちょこちょこ変わるので困ってます。
json = { :x=>1, :y=>2 }
json.inspect #=> {:x=>1, :y=>2}だったり{:y=>2, :x=>1}だったり
inspectがキーの値でソートしてくれればいいんですけど。

82 :デフォルトの名無しさん:2006/05/23(火) 17:08:10
文字列にしないでそのまま assert_equal すればいいじゃない

83 :& ◆bLDZf./c4g :2006/05/23(火) 17:16:46
{:x => 1, :y => 2} == {:y => 2, :x => 1} # => true


84 :デフォルトの名無しさん:2006/05/23(火) 20:41:27
Rubyの構文木を出力するライブラリってないすか?

85 :デフォルトの名無しさん:2006/05/23(火) 20:45:11
ttp://mono.kmc.gr.jp/~oxy/w/hiki.cgi?ast

86 :デフォルトの名無しさん:2006/05/23(火) 20:52:10
>>82,83
テスト対象となっているオブジェクトはハッシュと配列とが入れ子になっているので、めんどくさいので全体をinspectして文字列に変換しています。
もしかして、入れ子になっていても問題なく==で比較できるんでしょうか。試してガッテン。

87 :デフォルトの名無しさん:2006/05/23(火) 21:11:10
>>84
http://bruby.sourceforge.jp/

88 :デフォルトの名無しさん:2006/05/23(火) 21:37:37
>>86
自分でも試してみようよ。

{:x => 1, :y => [1, 2, 3], :z => {:a => [4, 5]}} == {:z => {:a => [4, 5]}, :x => 1, :y => [1, 2, 3]}
=> true


89 :デフォルトの名無しさん:2006/05/23(火) 21:42:41
配列には順序があるので[1, 2] != [2, 1]だが、
ハッシュ(のキー)には順序が無いので{1 => 2, 3 => 4} == {3 => 4, 1 => 2}。


90 :デフォルトの名無しさん:2006/05/23(火) 22:29:03
>>85>>87
ありがたい。

brubyって、exerbで使われてるんだな。
もしかして、exerbってコンパイルしてたりする

91 :デフォルトの名無しさん:2006/05/23(火) 22:50:47
どんなに複雑でもハッシュというデータ構造が維持される限りハッシュ部分はハッシュとして振舞う


ブロックつきメソッド通すとハッシュから配列になることはあるけどな

irb> h = { 'k1' => 'v1', 'k2' => 'v2' }
=> {"k1"=>"v1", "k2"=>"v2"}
irb> h.find{ |k,v| k=='k1' }
=> ["k1", "v1"]

いやまあ配列を返すってきちんと書いてはあるんだがなんか悲しい

92 :デフォルトの名無しさん:2006/05/23(火) 23:25:34
>>91
言ってる意味がわかんない

93 :デフォルトの名無しさん:2006/05/24(水) 00:53:23
>>91
言ってる意味はわかるが言いたいことはわからない。

94 :デフォルトの名無しさん:2006/05/24(水) 01:14:24
1行目と2行目以降に関連性があまりないな

95 :デフォルトの名無しさん:2006/05/24(水) 01:22:40
> ハッシュというデータ構造が維持される限りハッシュ部分はハッシュとして振舞う

これがもの凄いトートロジーに見えるのは俺が変なのかな?

96 :デフォルトの名無しさん:2006/05/24(水) 03:06:29
アイデンティティが維持される限りそれはそれであり続ける、という話だからそう珍しいわけでもない
言葉の技巧はいいからもうちょいわかりやすく喋れ、という気はしなくもないが

97 :デフォルトの名無しさん:2006/05/24(水) 05:47:33
>>95>>81 を読んでいないような気がする

98 :デフォルトの名無しさん:2006/05/24(水) 05:50:16
>>90
コンパイルはしていない

ソースをアーカイブしてローダーとRuby実行環境付けてexe化してるだけ

とりあえずオプションでソースを圧縮するかしないかを選べる

暗号化・難読化は未対応


99 :デフォルトの名無しさん:2006/05/24(水) 13:48:14
file=open("./test.dat","r")
while line=file.gets
print line
end
file.close

これってのは一行ずつ読み込んで、最後の行まで達したらその次の行でnilを返されるからwhileが終了するってのでおk?

100 :デフォルトの名無しさん:2006/05/24(水) 13:56:41
おk

256 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)