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

Ruby初學者スレッド Part 9

■ このスレッドは過去ログ倉庫に格納されています
0001紅寶石2006/11/21(火) 08:33:42
まずはマニュアル

マニュアル
http://www.ruby-lang.org/ja/man/
Ruby FAQ
http://ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
逆引きRuby
http://www.namaraii.com/rubytips/
Ruby リファレンスマニュアルの Windows HTML Help版
http://elbereth-hp.hp.infoseek.co.jp/ruby.html
Rubyリファレンスマニュアル刷新計画
http://doc.loveruby.net/


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

>>2-10
0002デフォルトの名無しさん2006/11/21(火) 08:35:57
「初心者」で検索できないから板として許可できない
0003デフォルトの名無しさん2006/11/21(火) 08:39:22

Rubyについて Part 24
http://pc8.2ch.net/test/read.cgi/tech/1159315598/
【Agile】Ruby on rails相談所 part2【DRY】
http://pc8.2ch.net/test/read.cgi/php/1151254378/
RUBYの宿題教えてください。
http://pc8.2ch.net/test/read.cgi/tech/1106572657/
【最高言語】 Rubyist Magazine創刊 【ルビま!】
http://pc8.2ch.net/test/read.cgi/tech/1094825807/
【ActiveScript】RubyをWindowsで使うスレ【GUI】
http://pc8.2ch.net/test/read.cgi/tech/1155031689/
0004デフォルトの名無しさん2006/11/21(火) 08:39:54
Ruby初心者スレッドPart8
http://pc8.2ch.net/test/read.cgi/tech/1159424939/
Ruby初心者スレッドPart7
http://pc8.2ch.net/test/read.cgi/tech/1154077799/
http://makimo.to/2ch/pc8_tech/1154/1154077799.html
Ruby初心者スレッドPart6
http://pc8.2ch.net/test/read.cgi/tech/1147918197/
http://makimo.to/2ch/pc8_tech/1147/1147918197.html
Ruby初心者スレッドPart5
http://pc8.2ch.net/test/read.cgi/tech/1143403165/
http://makimo.to/2ch/pc8_tech/1143/1143403165.html
Ruby初心者スレッドPart4
http://pc8.2ch.net/test/read.cgi/tech/1137927749/
http://makimo.to/2ch/pc8_tech/1137/1137927749.html
Ruby初心者質問スレPart3
http://pc8.2ch.net/test/read.cgi/tech/1125587131/
http://makimo.to/2ch/pc8_tech/1125/1125587131.html
Ruby初心者質問スレPart2
http://pc8.2ch.net/test/read.cgi/tech/1107799347/
http://makimo.to/2ch/pc8_tech/1107/1107799347.html
Ruby初心者質問スレPart1
http://pc5.2ch.net/test/read.cgi/tech/1100534824/
0005デフォルトの名無しさん2006/11/21(火) 08:41:42
Ruby Home Page
http://www.ruby-lang.org/ja/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
日本Rubyの会 公式Wiki - 日本Rubyの会Wiki
http://jp.rubyist.net/

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

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/
0006デフォルトの名無しさん2006/11/21(火) 12:55:44
Rubyコミュニティの特徴が遠回しに表れたスレタイ
0007デフォルトの名無しさん2006/11/21(火) 12:57:06
キ○○イが寄ってきやすい、とかか。
0008デフォルトの名無しさん2006/11/21(火) 13:11:48
凝る対象がスタート地点から間違えてるところとか
0009デフォルトの名無しさん2006/11/21(火) 14:23:48
Ruby初信者スレッドになる日も近いな
0010デフォルトの名無しさん2006/11/21(火) 14:44:30
Ruby/NArrayを使いたいのですが、導入方法がわかりません。
ドキュメントには、
Rubyの標準的な拡張ライブラリと同じです。ソースを展開したディレクトリで、

ruby extconf.rb
make
make site-install
(または make install)

と実行します。

とあるんですが、windowsXPなのでmakeが使えずインストールできません。
0011デフォルトの名無しさん2006/11/21(火) 15:30:39
じゃ、nmake。
0012デフォルトの名無しさん2006/11/21(火) 15:41:42
>>11
それも認識されません。
0013デフォルトの名無しさん2006/11/21(火) 15:42:59
じゃ、諦めろ。
0014デフォルトの名無しさん2006/11/21(火) 15:43:45
↓これにnmake付いてるYO

http://www.microsoft.com/japan/msdn/vstudio/express/visualc/
Visual C++ 2005 Express Edition 日本語版
Platform SDK
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/

Visual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使う
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
0015デフォルトの名無しさん2006/11/21(火) 15:52:24
ruby -v も知らせないような奴にいきなりそんなもん教えても無駄無駄
0016デフォルトの名無しさん2006/11/21(火) 19:15:52
まあ、こればっかりは導入マニュアルが悪いと言えなくもない
makeが標準で入ってるという前提でマニュアルを書くべきではない


makeの導入の仕方とかいちいち書くのも面倒だけどな
0017デフォルトの名無しさん2006/11/21(火) 20:00:21
そう言っても、拡張ライブラリ作者が、rubyが動くほとんどの
プラットフォームでのそれぞれのコンパイル方法を説明する
ってのも無茶だろう。
0018デフォルトの名無しさん2006/11/21(火) 20:14:26
これはRubyに限った話ではないんだが、総じてマニュアル書くの下手だよな

「インストールに必要なもの」という項目くらいあってもよさそうなもんだんだが、
「とにかくmakeして下さい」といった説明しかなかったりする

そりゃmakeでは必要なプログラムやライブラリのチェックはしてくれるが、
make自体がない可能性を考慮してないとか
いちいちmakeで躓くまで待たないとわからんとかそういうのはよくないだろ

makeのインストール方法の説明なんざ自前でする必要はない
とにかく、makeを始めとしてあれとこれが無いと動かない、ということはちゃんと文章化しろ
0019デフォルトの名無しさん2006/11/21(火) 21:59:06
make すら無い環境なんか使ってるクズがゴチャゴチャ偉そうに文句言ってんじゃねえよ。
0020デフォルトの名無しさん2006/11/21(火) 22:15:17
うーん、そんなレスで乱せる安いスレだと思われてるのか、ちょっとショックだ
0021デフォルトの名無しさん2006/11/21(火) 22:20:49
>>18
そう思うなら、お前が全部やればいいじゃない。
おまえ以外は誰もそんなもん必要ないからさ。
0022デフォルトの名無しさん2006/11/21(火) 22:24:10
はっきり言ってRubyはスゴイです。
間違いなく一生遊べるおもちゃです。はい。
0023デフォルトの名無しさん2006/11/21(火) 22:25:16
ああっいい!Rubyになりたい!!!
0024デフォルトの名無しさん2006/11/21(火) 22:26:58
もう一度!もう一度っ!!
0025デフォルトの名無しさん2006/11/21(火) 22:34:44
makeしろって書いてありゃ、よほどの池沼じゃない限りmakeが必要なことくらいはわかると思うが
0026デフォルトの名無しさん2006/11/21(火) 22:55:59
>>18
極めて正しい

が、個々のメンテナに求めるクオリティではないな
マニュアル書式を統括すべきだろう
それこそDebianパッケージみたいに
0027デフォルトの名無しさん2006/11/21(火) 23:48:17
>>18
お前、自分でやってみろよ。ごくたまに居るんだよな、こういう図々しい奴。
0028デフォルトの名無しさん2006/11/22(水) 00:08:33
>>27
でも、自分の環境だから、作成者本人ならやれるぞ、これ。それほど難しい作業でもない。
それこそ「やってみればわかる」。
0029デフォルトの名無しさん2006/11/22(水) 00:11:39
つうか、>>18を否定すると>>10はバカという話がもれなくくっついてきて
「makeすら自分で考えて用立てできん奴は使わんでよし」ということにならんか
0030デフォルトの名無しさん2006/11/22(水) 00:20:48
流石ハッカー御用達のRubyだな!
0031デフォルトの名無しさん2006/11/22(水) 00:51:23
まあそのへんは昔からだしな
説明だの事前用意だのの面倒くさがりがRubyを選ぶのだろう
ドキュメントやマニュアルの不親切や不備は直りそうにない
今年の6月だか7月にはどうにかなってるはずだったんじゃないん?
0032デフォルトの名無しさん2006/11/22(水) 00:56:50
英語サイトは親切だよ。
0033デフォルトの名無しさん2006/11/22(水) 02:51:35
テンプレを読まない>>31が言っても説得力ないなあ
0034デフォルトの名無しさん2006/11/22(水) 08:32:57
>>28
「自分の環境だから」って、自分の環境にmakeがあるからそういうドキュメントになってんじゃないの?
なんか読み違えてる?
0035デフォルトの名無しさん2006/11/22(水) 09:03:35
make がデフォで入ってない環境も考慮してドキュメント書くなんてダルそうだな。
そういう所では make 以外にも足りない物が色々ありそうだし。

頑張って書いたとしても、「それほど難しい作業でもないから書いて当然だろ」とか
言われちゃうんだろうなorz
0036デフォルトの名無しさん2006/11/22(水) 09:33:33
ruby-lang.orgにWindowsユーザー向けのチュートリアル用意すれば済む話じゃないの?
0037デフォルトの名無しさん2006/11/22(水) 09:50:36
で、結局のところ、>>10 の使ってるrubyは何版なわけ?
0038デフォルトの名無しさん2006/11/22(水) 10:15:27
つーかWindowsではふつうは用意されてるバイナリを使うんじゃないのか?
0039デフォルトの名無しさん2006/11/22(水) 10:16:10
と思ったら元の話はRuby自体じゃなく拡張ライブラリか。
0040デフォルトの名無しさん2006/11/22(水) 11:06:40
>>35
マニュアルなんだし必要なものくらい最低限明記しとけよ、という主張なんだろうし、
いちいち入手方法や導入方法にまで言及する必要はないのでは。
箇条書き程度だろう。
てか、適度に箇条書きしてるマニュアルのほうが多いような気もするが。


なんて言ってると>>10の拡張ライブラリにのマニュアルには
REQUIREMENTSとかの項がしっかり書かれてたりするんだよな
0041デフォルトの名無しさん2006/11/22(水) 12:13:39
元々RubyはいってるMac買えばOK.
頭使えない人はお金を使うべし。
0042デフォルトの名無しさん2006/11/22(水) 12:14:25
と思ったら元の話はRuby自体じゃなく拡張ライブラリか。
0043デフォルトの名無しさん2006/11/22(水) 23:40:46
質問させてください。
コマンドラインで使うスクリプトを書いています。
スクリプトにオプションを渡したいのですが、
オプションの処理をおこなうライブラリはあるのでしょうか。
0044デフォルトの名無しさん2006/11/22(水) 23:43:36
OptionParser
0045デフォルトの名無しさん2006/11/23(木) 00:11:29
#!/usr/bin/ruby

p ARGV

-----

./test.rb -a aaa -b bbb

["-a", "aaa", "-b", "bbb"]


これで用が済む場合も少なくない
0046432006/11/23(木) 00:41:02
>>44
>>45
ありがとうございます。
やってみます。
0047デフォルトの名無しさん2006/11/23(木) 12:00:23
optparse
0048デフォルトの名無しさん2006/11/23(木) 12:20:21
Rubyスクリプトのメモリ使用量や占有CPU時間を調べる方法はありますか? OSはLinuxです。

「readlinesで一気に配列として読み込むよりeachで各行処理したほうがこんなにメモリに優しいじゃん」
とかいうことを数値として実感して納得したいです
0049デフォルトの名無しさん2006/11/23(木) 12:28:13
参照カウントじゃないからGCを動かしまくらないと・・・
0050デフォルトの名無しさん2006/11/23(木) 12:34:40
シェルからコマンドとして実行して全体量を調べてもらって、readlines版とeach版の差分見れば?

…いや、どうやればコマンド単体のメモリ使用総量を調べられるのかわかんないけど
topを注視し続けるというのも現実的ではないしなあ
0051デフォルトの名無しさん2006/11/23(木) 14:33:01
ulimitでいろいろメモリ関係に制限をかけて実行させてみるとか。
多くメモリを食う方はより緩い制限で実行できなくなるだろう。

と思ったが、どのオプション使えばいいんだ。
0052デフォルトの名無しさん2006/11/23(木) 16:25:36
time コマンド使えば良いんじゃないかな。
bash組込みのtimeじゃなくてtcshのtimeとか/usr/bin/timeとか。
0053デフォルトの名無しさん2006/11/23(木) 16:27:28
>>48
libgtop2
0054デフォルトの名無しさん2006/11/23(木) 18:11:46
文字を数字に置き換えて配列にする処理をしているのですが、
効率のいいやりかたを教えてください。

例えば、"a"を2に、"b"を6に、"c"を11に、"d"を15に置き換える場合、
"aabdc"は[2,2,6,15,11]になるような処理です。
今は1文字づつcase〜whenで処理しています。
0055デフォルトの名無しさん2006/11/23(木) 18:29:34
こういうのはどうだろう。

h = {?a => 2, ?b => 6, ?c => 11, ?d => 15}
p "aabdc".unpack("C*").map{|c| h[c]}
0056デフォルトの名無しさん2006/11/23(木) 21:49:28
ハッシュで表引きするところが肝なのであとはバリエーションでしかないけど、
こんなのも。

(hのキーが?aとかの場合)
require 'enumerator'
"aabdc".enum_for(:each_byte).map{|c| h[c]}

(hのキーが"a"とかの場合。Ruby 1.9だと ?a == "a" だっけ?)
"aabdc".split(//).map{|c| h[c]} # //は空の(中に1文字もない)正規表現

# irbから動かしてString.each_charがないと騒いだのは秘密。
# ActiveSupportめ。

0057デフォルトの名無しさん2006/11/23(木) 21:54:31
define_method でブロックを受け取るメソッドを定義したいんですけど、なんとかなりませんか?
よろしくおねがいします。
0058デフォルトの名無しさん2006/11/23(木) 21:59:22
それはこっちのセリフだ
0059デフォルトの名無しさん2006/11/23(木) 22:05:29
書きかけの自作メール振り分けプログラムにこんなの(以下は断片)があった。

def register_action(sym, &block)
__send__(:define_method, sym) do |*options|
options = options.shift || {}
block.call(options)
end

register_action(:to_folder) do |options| ... end

引数の受け取り方になんか制限つきそうな気が……

0060デフォルトの名無しさん2006/11/23(木) 22:26:47
>>59
トン! なるほどん
0061デフォルトの名無しさん2006/11/23(木) 23:21:30
>>55
ありがとうございました。
時間も半分以下に短縮できました。
0062デフォルトの名無しさん2006/11/24(金) 00:32:00
Mac板にRubyスレないのでここでいいのかな?

まったくの初心者なんですけど(;・∀・)
ターミナルに ruby ファイル名.rb でリターン押しても
ruby: No such file or directory -- ファイル名.rb (LoadError)
ってなります ファイルの保存場所とかにルールとかでもあるのですか?
0063デフォルトの名無しさん2006/11/24(金) 00:44:18
>>62
カレントディレクトリは確認した?
pwd
0064デフォルトの名無しさん2006/11/24(金) 00:50:38
>>63
カレントディレクトリ!?
すいませんほんとに初心者なんで…絶対パスの事かな

仮にデスクトップにそのファイルがあるならばそれを指定しなければダメと言うことですか?
ターミナル自体始めて動かしたもので
0065デフォルトの名無しさん2006/11/24(金) 01:10:44
>>63
ヒントサンクス

おお 自己解決しました Ruby自体の問題ではなくターミナルの問題でした ターミナルちっと勉強するかorz
ファイルの場所をちゃんと指定して大丈夫でした

0066デフォルトの名無しさん2006/11/24(金) 03:09:21
MacならファイルをFinderからターミナルにドロップすれば絶対パスが出てくる。
0067デフォルトの名無しさん2006/11/24(金) 11:56:39
>>65
Rubyに限らず,Macを使いこなすにはターミナルの使い方(bash シェルの使い方)に詳しくなっておくと便利だよ。
かくいう自分は,ターミナル上でRubyを楽しんでるマカーです。
ちょっとした日常の繰り返し作業も,AppleScriptやシェルスクリプトではなくRubyスクリプトを書いて処理してます。
0068デフォルトの名無しさん2006/11/24(金) 15:07:23
スクリプトファイルの冒頭に、
#!/usr/bin/ruby -Ku -Ilib
とかくとエラーになる。ただ、
#!/usr/bin/ruby -Ilib -Ku
と、順序を変えると大丈夫。コマンドラインだと順序関係なく動くんだけど…
何か制約があるの?それとも前者だとオプション解釈上問題でも生じてる?
0069デフォルトの名無しさん2006/11/24(金) 16:42:45
~$ ruby "-Ke -Ilib"
ruby: invalid option - (-h will show valid options) ←たぶんこのエラーが出たはず
~$ ruby "-Ilib -Ke"
ruby: Interrupt   ←エラーなし、終了のためにここでEOF
~$

スクリプトの第1行目(俗称shebang)では、複数の引数は解釈が保証されない。
たとえばLinuxでは「空白後をひとまとめにした1個の文字列」として渡される。

#!/usr/bin/env ruby -Ke がうまく動作しないのもこれが理由。

ということで、「Rubyでは-Kオプションを最初以外に書いておくとたまたま動く」が正解。
0070デフォルトの名無しさん2006/11/24(金) 16:48:37
補足。

Rubyの場合、起動したインタプリタが改めて#!行を自分で解析して
自前である程度は処理してる。

$ cat hoge
#!/bin/sh -x
echo "$@"
$ ruby hoge
とかやると、rubyがshをexecする。
0071デフォルトの名無しさん2006/11/24(金) 17:15:45
perl.pl
---------------------
#!/usr/bin/perl
die "OOPS! IT'S PERL!"
---------------------

~$ ruby ./perl.pl
OOPS! IT'S PERL! at ./perl.pl line 2.


なにこの素敵無駄機能
0072デフォルトの名無しさん2006/11/24(金) 18:05:41
>>69
判りやすい解説thx。-KuIlib としてやったらうまくいった。
-IlibKuだとダメみたい。libじゃなくてlibKuディレクトリを探しにいっちゃうんだろうなぁ。
こんなことドキュメントに書いてあったかな…。

くっつける処理が謎だ。普通にくっつけたら、
先の例、前者のほうが「たまたま」動きそうなもんだが…。

それと、-Cと-Iを同時指定とかしたいときはどうするんだろう…?
0073デフォルトの名無しさん2006/11/24(金) 18:40:46
>71
__END__(Perlでもスクリプト終端)を
組み合わせると混ぜコード書けるが
素敵過ぎてオススメできないんだぜ
0074デフォルトの名無しさん2006/11/24(金) 21:36:07
>>72
shebangに書かない。
シェルスクリプトから起動するようにする。

#!/bin/sh
ruby <好きなだけオプション> <Rubyスクリプトファイル>

こんな感じ。
あんまりよろしくないけど。
ってか、そんなにオプション付けたくなるようなことってあるか?
俺の場合は、あって-Kくらいだけどなー。
-lも-CもRubyのスクリプト内でできるしな。厳密には意味が違うかもしれんが。
0075デフォルトの名無しさん2006/11/25(土) 01:19:34
>>69
はじめてしった

スクリプトの第一行目は、
#!/usr/bin/ruby -Ku -Ilib
と書いても
#!/usr/bin/ruby "-Ku -Ilib"
とひとくくりにされるわけね・・・

引数が一個だと、「一応は」動いているわけだ
0076デフォルトの名無しさん2006/11/25(土) 10:18:58
>75
違う。そこは実装依存。
Linuxはそうなるというだけで、ほかのUNIXだと適切に解釈してくれるものもある。
0077デフォルトの名無しさん2006/11/25(土) 14:38:06
間違いなく言えることは、
「shebangでは複数の引数を書くべきではない」
ということ。
どうしても複数の引数を与えたい場合は、>>74のように一ひねりすること。
0078デフォルトの名無しさん2006/11/25(土) 15:04:54
>>76
そうなん?
これって、どのレベルで決定されるものなんでしょ?
OS?shell?ruby?
0079デフォルトの名無しさん2006/11/25(土) 16:19:54
Ruby/Tkをサブルーチン的に使いたいので教えて下さい。概要は後記のように,
MAINスクリプトから,SUBスクリプトに値(オブジェクト)を受け渡ししたいのですが,
いろいろサンプルを読んでもウィジェット側からサブルーチンを呼び出す方法しか無く,
その逆の方法の参考がありません。
Ruby/Tkを子プロセス的というか関数的に使うにはどうしたらよいでしょうか?

#!ruby
# MAIN
require 'sub.rb'
include Submodule
val = String.new
result = sub(val)
resultについての処理
...
__END__

#!ruby
# SUB
moduel Submodule
require "tk"

def sub(val)
v = TkVariable.new(val)

TkRadioButton.new { text 'top'; variable v ; value 'top'; anchor 'w'
pack('side' => 'top', 'fill' => 'x')}
TkRadioButton.new { text 'middle'; variable v ; value 'middle' ; anchor 'w'
pack('side' => 'top', 'fill' => 'x')}
TkButton.new { text 'Quit' ; command 'exit' ; pack }
Tk.mainloop
end
__END__
0080デフォルトの名無しさん2006/11/25(土) 16:29:48
>>78
shebang の処理は kernel が行ってるはず
0081デフォルトの名無しさん2006/11/25(土) 17:43:35
開いたファイルに文字を書き込む場合はどうしたらよいのでしょうか?

openメソッドをwモードでファイルを作成して
どうすればよいのでしょうか?
0082デフォルトの名無しさん2006/11/25(土) 17:48:31
>>81
>>1の逆引きRuby見たか?
0083デフォルトの名無しさん2006/11/25(土) 18:10:10
>>81
はい。
.writeメソッドではないですし。
0084デフォルトの名無しさん2006/11/25(土) 18:17:39
>>81
こんなのではいかが?
http://www.namaraii.com/rubytips/?%A5%D5%A5%A1%A5%A4%A5%EB%A5%A2%A5%AF%A5%BB%A5%B9#l9

ちゃんと見よう
0085デフォルトの名無しさん2006/11/25(土) 18:42:18
>>84
すみません。ありがとうございます。無事解決いたしました。

また、続きの質問なのですがこのようなプログラムで実行すると
出力ファイル名が、outputになります。標準入力から入力した文字にしたかったのですが・・・

output = $stdin.gets.chomp
up = File.open("output","w")

"output" を"#{output}" にして式展開すると入力した文字になりますが
#{} をしなくて入力した文字にすることはどうすればよいのでしょうか?
#{}だと面倒なのですが・・
0086デフォルトの名無しさん2006/11/25(土) 18:44:15
>>85
"output" のクォートを取ってみな
0087デフォルトの名無しさん2006/11/25(土) 23:42:37
>78
その三者で言えば OS。 shebang 行の解釈はシステムコールがやる。どっちみち77が正しい。
0088デフォルトの名無しさん2006/11/26(日) 17:07:36
>>79
そりゃexitしたらそれ以上実行されんわな。
0089デフォルトの名無しさん2006/11/26(日) 17:20:09
subから何も返してないし。

module Submodule
  require "tk"

  def sub(val)
    v = TkVariable.new(val)
    root = Tk.root

    TkRadioButton.new {text 'top'; variable v; value 'top'; anchor 'w'
      pack('side' => 'top', 'fill' => 'x')}
    TkRadioButton.new {text 'middle'; variable v; value 'middle'; anchor 'w'
      pack('side' => 'top', 'fill' => 'x')}
    TkButton.new {text 'Quit'; command {root.destroy}; pack}
    Tk.mainloop
    v.value
  end
end

include Submodule
result = sub("")
p result
0090デフォルトの名無しさん2006/11/26(日) 18:17:06
どうせRubyスクリプト書いたことないんだろうな、と思う
0091デフォルトの名無しさん2006/11/26(日) 18:58:38
その気持ちはわからんでもない

Rubyスクリプトをある程度書けるようになった人で
GUIがどうしても必要になった人が仕方なく止むに止まれぬ理由で使うのがRuby/Tkだよな

少なくとも、Ruby部分で躓くような人はまだ使ってはイカン
0092デフォルトの名無しさん2006/11/26(日) 19:19:29
文字を置換したいのですが

文字列中のAをBに、EをFに、MをNに、OをPに 置換したいのですが
どうすればできるのでしょうか?
gsubメソッドだと
string.gsub(/AEMO/,'BFNP') じゃ、AEMOをBFNPと固まった文字列で置換してしまいます。
一度で各文字を置換指定するにはどうしたらよいのでしょうか?
0093デフォルトの名無しさん2006/11/26(日) 19:30:39
1. gsub を4つ繋げる
2. gsub にブロックを渡して、マッチした文字ごとに分岐する処理を書く
3. tr を使う
http://www.ruby-lang.org/ja/man/?cmd=view;name=String#tr

"ABCDEFGHIJKMNOPQRSTUVWXYZ".tr("AEMO", "BFNP") # => "BBCDFFGHIJKLNNPPQRSTUVWXYZ"
0094デフォルトの名無しさん2006/11/26(日) 21:48:55
out = "ARAFAFAFAFFFAFATRWTATQWTWQTRQWTQTQTQTQTQWTQWEFTQWETQWTQWTTAFAFAFRATRARTA"

start = 1000
moji = ""
(0..15).step(3){|i|
moji << #{out[i,3]} + "(" + "#{start.to_i - 150 + i}" + ")" + ","
p moji
}


すみません、7行目に文法エラーと出てしまましたが、どう間違って?

ARA(850),FAF(853),・・・ みたいに表示したく。
そして、最後の文字列の , は削除したいと思っておりますが、それ以前にエラーがでてしまいます。
どうぞよろしくお願いいたします。
0095デフォルトの名無しさん2006/11/26(日) 21:53:43
>>94
> moji << #{out[i,3]} + "(" + "#{start.to_i - 150 + i}" + ")" + ","
      ^^^^^^^^^
ここが違う。
#{} は文字列に変数を埋め込むときに使う。
この場合out[i,3]だけでいい。

↓のようにしても(・∀・)イイ!!。

moji << "#{out[i,3]}(#{start.to_i - 150 + i}),"
0096デフォルトの名無しさん2006/11/26(日) 21:56:32
>>95
というか、前者の書き方が見にくいからこその#{}だよな。
0097デフォルトの名無しさん2006/11/26(日) 22:03:34
>>95
ありがとうございます!無事できました。
#{}を式展開とだけ覚えていたのですが、文字列中で有効なんですね。勉強になりました。
0098デフォルトの名無しさん2006/11/26(日) 22:04:36
なんか気持ち悪いな

j = start.to_i - 150 + i
moji << "#{out[i,3]}(#{j}),"

埋め込むのは変数やメソッドだけにしてこう書こうぜ
0099デフォルトの名無しさん2006/11/26(日) 22:53:57
俺は#{}なんて滅多に使わないな
括弧やクォートの囲みは浅くしたい
0100992006/11/26(日) 22:56:11
+ を多用するようなら sprintf してる
0101デフォルトの名無しさん2006/11/26(日) 23:58:59
質問。

make_the_file unless Filetest.exist?(file)
file読み込み処理

と

begin
 file読み込み処理
rescue Errno::ENOENT
 make_the_file
 retry
end

ってどっちが「普通」ですか?

前者は Filetest.exist? が毎回必ずディスクを余分に読みますよね
例外を待ち構えて例外が起こったときに対処したほうが素直ですか?
■ このスレッドは過去ログ倉庫に格納されています