Ruby 初心者スレッド Part 48at TECH
Ruby 初心者スレッド Part 48 - 暇つぶし2ch304:デフォルトの名無しさん
12/03/08 15:43:30.91
>>293
>>286はなんだったのか
後になって変なこというから誰も相手にしたくないんだよ。もうRuby使わないで

305:254
12/03/08 15:46:28.03
>>255
レスありがとうございます。警告は読みました。なので最後の一文があります。
疑問点はなぜif /#{pattern}/では警告が出ず、if /\d/では警告が出るのか
というところでした。

>あと、Rubyにおいて $_ を利用した省略の書き方は全く行なわれない
$_を使う人はいないということでしょうか。
書く際はすらすら書けて便利だと思うのですが、
やはり可読性が下がるからなのかもしれませんね。

306:デフォルトの名無しさん
12/03/08 16:03:06.58
>>304
しつこい。
あんた性格悪いね。

307:デフォルトの名無しさん
12/03/08 16:09:53.54
>>305
/\d/ならパース時にどんな正規表現か確定できるけど
/#{ptn}/はptnの内容に依存するから
(パースし終えてからの)実行時にならないと確定できない
だからパース時には警告できない、とかそんなところだと思う

暗黙の$_を使うのはワンライナーぐらいだと思う
Perlに慣れてない人が読んだらまず読み違えるし

308:デフォルトの名無しさん
12/03/08 16:17:00.38
と思ったけどif /#{ptn}/;でも警告してしまって問題ない気もする
何か都合が悪いんだろうか。えらい人解説してください

309:デフォルトの名無しさん
12/03/08 16:45:24.69
>>305
前者だと、なぜ警告がでないんでしょうね?
実装のもれだと思いますけど

Rubyが出来た当初はPerlにならって$_を暗黙のレシーバーや引数として使うようになってましたが
いまとなっては、暗黙の引数はよくないだろうと言うことに

なかでも特に
条件式部分の単独の正規表現リテラルは
~/正規表現リテラル/ 扱いにするというのは
やり過ぎなので廃止の方向で
とう言うことなのでしょう

ちなみにワンライナーでコマンドラインに書いた場合には警告されません


310:デフォルトの名無しさん
12/03/08 18:28:44.43
>>308,309
えらい人でもなんでもないけど、
>>307上段の解釈、つまり「動的文字列だから」でいいんジャマイカと思うよ

311:デフォルトの名無しさん
12/03/08 21:10:58.99
なんかRORのおかげか、RUBY人口すごい増えた気がする。

312:デフォルトの名無しさん
12/03/08 22:53:54.86
え、いまさら?

313:デフォルトの名無しさん
12/03/08 23:27:28.55
生の正規表現リテラルを ~演算子が付いてるような扱いにするのが問題なので
やはり、単純な警告漏れだと思うのですよ

式展開をする場合はパースのしかたがちょっと違ってて
警告するようになってないだけなんじゃないでしょうか


314:デフォルトの名無しさん
12/03/09 09:19:50.06
ここで言っててもらちがあかんぞ。
rubyコミッタの看板背負って発言してる奴はここには誰もいないんだから。

315:デフォルトの名無しさん
12/03/09 19:09:43.87
>>295
>あなたについての話はもう誰もしてないから帰っていいよ
ここは初心者がずれた質問をしてもかまわない場所。
おまえこそ初心者スレに来るな。

316:デフォルトの名無しさん
12/03/09 19:33:49.99
すいません、アドバイスお願いします
Rubyを勉強するのですがやっぱりIDEから入ったほうがいいですか?
やっぱりメソッド?とかインポートするライブラリの名前を覚えてない状態なので
はじめはIDEの補完に頼りながらがいいのかなとおもっているのですがどうなんでしょうか?
慣れてきたらテキストエディタに移行するといいでしょうか?

317:デフォルトの名無しさん
12/03/09 19:42:31.10
初心者はまずvimを使いましょう
そこそこ慣れてきたらvimです
もう一人前かなと思ったらvimにするとよいでしょう

318:デフォルトの名無しさん
12/03/09 20:51:03.21
なんでもいいから、IDE入れて補完がどの程度役に立つか体感してみたらいいよ。


319:デフォルトの名無しさん
12/03/09 20:58:01.80
>>316
>>4 Rubyのためだけに新規導入するのはお勧めしない

320:デフォルトの名無しさん
12/03/09 21:13:53.96
# ダメ
str = "abc\tdefg\th"
1 while(str.sub!(/\t+/, ' ' * ($&.size * 8 - $`.size % 8)))
p str

# イイ
str = "abc\tdefg\th"
str =~ /\t+/
1 while(str.sub!(/\t+/, ' ' * ($&.size * 8 - $`.size % 8)))
p str

subの第一引数の正規表現より前で行われた正規表現の結果が
subの第二引数で用いた$&や$`に入るんですね。
仕様として捉えるべきなのでしょうか。
タブを空白に置き換えようとしました。


321:デフォルトの名無しさん
12/03/09 21:26:40.26
いや、違いますね。subは一切$&に関与しないようでした。
こうしたらうまくいきました。2回マッチさせているので非効率ですが・・。
str.sub!(/\t+/, ' ' * ($&.size * 8 - $`.size % 8)) while(str =~ /\t+/)
p str


322:デフォルトの名無しさん
12/03/09 21:33:27.53
# ゆとり
s.split(/\t/).map{|e|e.ljust(8)}.join

323:デフォルトの名無しさん
12/03/09 21:35:30.83
※ 正真正銘のゆとりであってお手本ではありません

324:デフォルトの名無しさん
12/03/09 22:07:20.63
>>316
【初心者のためのVim入門】
Vimを起動したら、以下の手順で編集モードが開始します。
少し長いですが頑張って覚えましょう。
[:] → [q] → [!] → [Enter] → [e] → [m] → [a] → [c]→ [s] → [Enter]



最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch