1 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 14:21:25 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 ★注意★ Ruby 1.9.1 は初心者にはまだ時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。 (理由:現時点では多くの有名ライブラリやアプリが 1.9.1 に完全対応していないためです。) 1.8.7 でも 1.9 系に導入された新機能のいくつかが利用可能なため、1.8.7 を習得すれば将来スムーズに 1.9 系に移行できるでしょう。 関連スレやURLは>>2-5 あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・モジュール名やエラーメッセージでググる ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/ ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(自力で訳さずなるべくそのままで) ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる)) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって初心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
331 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 13:35:34 ] $ rvm use system <i> Now using system ruby. </i> $ irb --prompt simple >> RUBY_DESCRIPTION => "ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0]" >> h = Hash.new([]) => {} >> [h.default, h[0], h[1]].map(&:object_id) => [2156963800, 2156963800, 2156963800] $ rvm use 1.9.1-head <i> Now using ruby 1.9.1 head </i> $ irb --prompt simple >> RUBY_DESCRIPTION => "ruby 1.9.2dev (2009-12-11 trunk 26067) [x86_64-darwin10.2.0]" ruby-1.9.1-head > h = Hash.new([]) => {} >> [h.default, h[0], h[1]].map(&:object_id) => [2151892720, 2151892720, 2151892720]
332 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 15:45:53 ] >>331 みたいな人ってソース中のコメントもほぼかかなそうだよな
333 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 16:35:24 ] >>332 は初心者
334 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 16:59:49 ] まあ初心者スレだしな
335 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 17:53:52 ] 結局>>328 は間違ってるということかい?
336 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 18:26:49 ] new(初期値)で生成されたハッシュに存在しないキーでアクセスした場合の挙動は、 同じオブジェクトが返るというのが正しく、 毎回異なるオブジェクトが返るというのは誤り。
337 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 18:37:34 ] 質問するならリファレンスマニュアルくらい読んでからこい
338 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 18:47:27 ] 初心者スレ的には 「マニュアルのここ読めわかりやすくて疑問の余地無し氏ね」 と言える環境を揃えるほうが先な気もする
339 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 23:53:39 ] >>328 それは初期値じゃなくて初期ブロックじゃないのか? h = Hash.new{|hash,key| [] } p h[2].object_id == h[2].object_id # => false 未設定のキーを指定された時に、そのつどブロックを実行した結果を返す よって同じキーでも毎回違うArrayが帰ってくる
340 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 01:14:37 ] >>338 ようやくたどり着いたと思ったら、 xxxx() 執筆者を募集中 おい、コードを書いたのはどこに行ったの? 採用した人は? なので、動かないものは、自分で書き直すことにしてる。 一から一人でするより、ちょっと近道。
341 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 05:46:41 ] >>337 >質問するならリファレンスマニュアルくらい読んでからこい おまえは書き込むまえに>>1 を読んでこい
342 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 06:50:04 ] >>341 おまえは書き込むまえに>>1 を読んでこい
343 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 07:39:01 ] そんなことより俺のIDを見てくれ。どう思う?
344 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 09:13:46 ] 見えない
345 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 10:15:45 ] >>344 はバカ
346 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 10:27:17 ] まあバカスレだしな
347 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 12:45:29 ] 教えてください Hpricotで日本語テキストのリンク検索が上手く動きません どうすればNokogiriと同じ動きになるのでしょうか #!ruby -Ku require 'hpricot' require 'nokogiri' html = "<html><a>りんく1</a><a>りんく2</a><a>りんく3</a></html>" doc = Hpricot(html) print doc.at("a[text()*='りんく2']"); # エラー発生 doc = Nokogiri(html) print doc.at("a[text()*='りんく2']"); # こちらは正しく動く エラー内容 /usr/local/lib/ruby/gems/1.9.1/gems/hpricot-0.8.2/lib/hpricot/elements.rb:486:in `index': incompatible character encodings: ASCII-8BIT and UTF-8 (Encoding::CompatibilityError)
348 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 12:48:10 ] >>347 初心者は Ruby1.9 使うなってこれだけ言われてるのになんでわからんのだエラー
349 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 12:54:16 ] >>348 が FA なのだが というか何もわからず動かしていることが原因で、 Nokogiri が動いたのはただの偶然に過ぎない むしろ「Nokogiri が動いたのは何故ですか」という質問になるべき事象 無理しないで Ruby 1.8.7 使え 1.8.7 を理解したあとで差分学習で 1.9.1 を習得するのが一番早い
350 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 12:57:10 ] 了承、1.8.7にする
351 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 12:59:15 ] hpricotはコンパイルが通る程度に1.9対応されてるだけ。 作者の _why the lucky stiff はネット上から失踪しているので、事実上塩漬け状態。
352 名前:デフォルトの名無しさん [2009/12/20(日) 16:02:52 ] 質問 rdoc が生成する HTML について、特定の要素(例えば <pre>タグ)のスタイルだけ いじりたいという場合はどうしたらいいのでしょうか?
353 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 16:27:02 ] >>352 ちょっと見た感じでは rdoc に --template オプションで 自作のテンプレートを指定してやればいいんじゃまいか 既存のテンプレが rdoc/genarators/template/html に入ってるから それを部分的に書き換えて使えばよさそう
354 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 19:17:36 ] whyさん死んじゃったからNokogiri推奨だと思うけど、 >>347 がhpricot使いたいと思った理由はなんだろ
355 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 19:20:40 ] え、whyって死んじゃったの? もしそうならHpricotきめえとかdisるのやめて冥福を祈る
356 名前:352 mailto:sage [2009/12/20(日) 19:31:28 ] >>353 ありがとうございます。 ベースになるテンプレートを選んで、それに改変を加えたものを使おうと思います。
357 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 20:19:30 ] ネットワーク的に、ね。 自分できれいさっぱり痕跡を消していった。
358 名前:352 mailto:sage [2009/12/21(月) 15:57:51 ] 追記 rdoc の --style オプションにスタイルシートのパスを渡すことで HTML生成時に自前のスタイルシートを読み込ませることができました。 テンプレから CSS の部分だけ切り出して編集して、 rdoc --style=path_to/hoge.css でうまくいきました。 というか、manページに普通に書いてあったorz
359 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 22:18:49 ] hpricot でも nokogiri でもいいんですが、 doc = Hpricot(open(uri).read) (doc/:a).each do | link | if link[:href] == '#' p "設定し忘れ => #{link[:lineno]}" end end みたいに、行番号を取得することって出来ませんか?
360 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 22:21:13 ] 行番号というメタ情報があれば取得できるよ ないならできない 自分で行番号だと思うものを作って数えるしかない
361 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 09:38:58 ] >>359 その程度なら普通に正規表現でよさそうだね。 File.open(filename) do |f|
i = 0 f.each_line do |line| i += 1 puts "#{filename}:#{i}: 設定し忘れ" if /href=("¥#"|'¥#¥')/ end end
362 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 09:39:08 ] jrubyでmechanize使えている人います?hpricotのjava版使うしかないんでしょうか?
363 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 09:45:49 ] >>361 みたいに例示依存の回答する人なんなの
364 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 10:39:36 ] >>361 欲しいのは行番号であって、例文なんかどうでもいいんだが
365 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 11:00:20 ] 例題コードを添削するのはどうかとw
366 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 11:10:57 ] 作業ディレクトリの変更って出来ませんか? ./data/a.rb ./data/1.txt ./main.rb ってあったときに main.rbからa.rbをrequireするんですけど a.rbは open("1.txt","r") これで読めるようにしたいです
367 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 11:21:49 ] save = Dir.pwd Dir.chdir "./data" # 作業 Dir.chdir save とかかな 同じディレクトリにあるファイルを使うってことなら open(File.dirname(__FILE__)+"/1.txt") でもいいかも
368 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 11:34:12 ] Pythonのdirみたいに、あるオブジェクトが持ってるメソッドと変数を一覧するものってありますか?
369 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 11:36:29 ] >>367 それでいけそうです ありがとうございます
370 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 11:37:30 ] puts Object.methods ソートするとなおみやすい puts Object.methods.sort
371 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 11:41:30 ] Object#methods Object#instance_variables
372 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 12:00:57 ] >>370-371 ありがとうございます! これが欲しかった。
373 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 12:36:02 ] >>359 Nokogiriの要素は #line メソッドがあるはず。
374 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 14:41:59 ] >>367 Dir.chdir "./data" do # 作業 end でもいけるよ。
375 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 14:46:45 ] >>374 おお知らなかった もっかいリファレンス見直すことにしよう
376 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 10:27:52 ] ねー、 hoge/lib/ ← 自作ライブラリの rb ファイル hoge/test/ ← lib のファイルに対応するテストスクリプト という一般的なディレクトリ構成で test/test_hoge.rb を実行する場合、どうするのが「ふつう」なんだ? :~/hoge$ ruby test/test_hoge.rb :~/hoge/test$ ruby test_hoge.rb :~/hoge$ testrb test/test_hoge.rb :~/hoge/test$ testrb test_hoge.rb
377 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 11:29:21 ] コマンド直叩きするときは ruby -Ilib test/test_xxx.rb とする気がするが、 普段はrakeのTestTask任せだから、どうやってるか意識してないわ。 TestTaskの中をみてみたけど、testrbを使うことも使わないことも可能みたい。 (デフォルトはrakeのライブラリ内の機能を使う) なお、rakeの場合、test/ の中で起動しても、ディレクトリを遡ってRakefileを 探して、見つかったディレクトリで動くので、hoge/Rakefileとして置いている 場合は、実質的には hoge直下でやってることになるはず。
378 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 11:52:34 ] ruby test/test_hoge.rb とかやりたいなあ テストするためだけに test/ に降りてしまうのは、どうも…
379 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 11:54:14 ] そのへんは、helper.rb をどうやって読むかの一点にかかってる気がしてならない
380 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 11:55:55 ] ファイルいっこテストするだけなのにrakeはないわー
381 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 12:04:42 ] rake test TEST=test/test_hoge.rb でファイル一個か。
382 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 13:39:33 ] テスト実行するのにコマンド売ってるのかよ。 autotestでファイル保存と同時に自動でテスト実行だろJK
383 名前:362 mailto:sage [2009/12/23(水) 13:40:52 ] JRuby 1.4でNokogiri対応になったみたいですね。失礼しました。
384 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 13:52:22 ] >>382 テストが通らないタイミングでファイルを保存したりしないの? というか編集途中で保存し辛くなりじゃん
385 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 13:54:01 ] なるじゃん
386 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 14:12:02 ] ファイルいっこのテスト方法がないわけじゃなかろう autotestを使うかどうかとはまた別の議論だと思う
387 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 15:17:10 ] >>382 コードを保存したいタイミングと、テストを走らせたいタイミングは別じゃね? エディタからテストを実行させられればそれでいいけどなあ。 わざわざ保存したときに勝手にテストが走ってほしくないよ。
388 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 18:03:22 ] かりに毎回毎回コマンドラインからテストするとしても シェルの履歴ぐらい使うだろう。
389 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 18:27:27 ] 秀丸とかサクラエディタとか外部コマンドを 実行できるテキストエディタを使うがよろし。 俺はVim使ってるけど。
390 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 18:36:19 ] 俺はタブ機能付きの端末エミュレータ使って 右端のタブをテスト用に使ってる タブ切り替えにキーを割り当ててやるとかなり快適だ 同じ用途で GNU Screen とか使ってる人もいるのでは?
391 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 19:41:16 ] auto-save-buffersつかってるとautotestは使えない
392 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 21:51:25 ] >>387 そうかー、その品は人それぞれだな。 autotest連携で結果をSnarl(今ならGrawlか?)で通知出したり、サウンド出したりしてるけど けっこう快適よ? ただ、coLinuxで動かすとその辺の連携がしにくくて困る さらに、AutoHotKeyで保存キー入力と同時にブラウザリロードとかもやってる。
393 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 01:40:48 ] 自動保存+すきあらば無意識で手動保存してるから、 保存とか意識したことがないなー。
394 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 09:39:55 ] warning: Insecure world writable dir /home in PATH, mode 040777 という警告がでて困ってます。 この警告だけを出さないようにする方法があれば教えてください。 home のパーミッションが 777 なのがおかしい!といわれればそうなんですけど、 下請けにはそんなことすら変更する権限がないんです。
395 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 09:47:09 ] >>394 知らんよ RailsはRailsスレで
396 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 10:47:41 ] >>394 環境を詳しく もしRailsなら権限くれっていえ。まともに開発できんから
397 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 11:31:38 ] >>394 ENV['PATH']から /home を抜け。
398 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 11:33:56 ] ENV['PATH']つーか、rubyを実行する前だからシェルの環境変数PATHね。
399 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 11:52:12 ] >>395 なぜRails? >>396 環境はlinux 2.6.9-89.EL, ruby 1.8.7-p174です >>397 $PATHには/homeがないけど、/home/username/binがあります。 これを除くことはできないので、どうしたもんか困ってます。
400 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 12:28:44 ] フルパスで実行するようにすれば除けるんじゃないの?
401 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 12:32:16 ] あくまでrubyに伝わるPATHだけ変わればいいので、 * コマンドの環境だけ変える。 PATH=/usr/bin:/bin(などなど) ruby 引数 とか * 一度変えて戻す OLD_PATH=$PATH PATH=/usr/bin:/bin(などなど) ruby 引数 PATH=$OLD_PATH とか * サブシェル内で変える ( PATH=.... ruby ) とかでもいい。
402 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 16:39:54 ] RubyGemsで依存関係を調べる方法ないですか? gem dependency を使ってみているんですがうまくいきません。 $ gem dependency mechanize -v "0.9.3" --remote Gem mechanize-0.9.3 nokogiri (>= 1.2.1, runtime) hoe (>= 1.12.2, development) $ gem dependency mechanize -v "0.9.0" --remote No gems found matching mechanize (= 0.9.0) $ gem dependency mechanize -v "<0.9.0" --remote Gem mechanized_session-0.0.2 mechanize (>= 0.9.3, runtime) hoe (>= 2.3.3, development) 何がやりたいかというとmechanizeでnokogiri非依存のバージョンを探したいのです。
403 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 16:56:21 ] >>402 WWW::Mechanize.html_parser = Hpricot
404 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 17:04:10 ] >>402 libxml2 に依存したくないというのなら>>403 Nokogiri のインストール自体を dependency 経由で行って欲しくないというのなら、Mechanize 0.8.4 かそれ以前が必要
405 名前:402 mailto:sage [2009/12/24(木) 17:13:20 ] 即レスありがとうございます。 >>403 あー、いや、Bundlerで利用しようとしておりまして、 実行環境ではNokogiriが動かないため依存段階そのものから外したいのです。 # 実際はappengine-jrubyでmechanizeを使いたいという難儀なアレなのです # jruby版Nokogiriはffi依存のせいでappengineでは動かんのですわ・・・ appengine-jruby - Project Hosting on Google Code code.google.com/p/appengine-jruby/ >>404 ありがたい 0.8.4ですね、試してみます。 後学のために聞きたいのですが、こういうのってどうやって調べられるもんなんでしょうか? 以前はgemコマンドでgemのパッケージ時の設定を見る方法があったような気がしたのですが、どこいったんでしょう?
406 名前:402 mailto:sage [2009/12/24(木) 17:16:34 ] >>405 の前半の説明が足りないので補足。 mechanize 0.9.3では >>403 したいところなんですが、 require 'mechanize' するだけでffiねーぞゴラァ(appengine版のjrubyでは含まれてないためらしいです。pure java版Nokogiriが望まれます) のエラーがでてしまうのです。
407 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 17:20:09 ] >>405 何もしてない 賞味3分の力技 add_dependency から Nokogiri が消えるまで mechanize.gemspec の github 履歴を直接調べて遡った
408 名前:デフォルトの名無しさん [2009/12/24(木) 18:55:35 ] 参考までに聞きたいのですが、 長くなり過ぎたメソッドチェーンの途中に改行を入れる場合、 皆さんはどこで改行するのが適切だと思いますか? 1) ピリオドの後に \ value = this.is.a.\ very.long.method.chain 2) ピリオドの前に \ value = this.is.a\ .very.long.method.chain 3) そもそも途中で改行しない value = this.is.a value = value.very.long.method.chain
409 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 19:03:30 ] >>408 長くなりすぎたと感じる時点で「よくないコードの匂い」なので、リファクタリング開始
410 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 19:13:53 ] >>408 メソッドチェーンでは改行は入れない 今更80文字制限などとは言わないが、メソッドチェーンで長い場合は途中変数で分ける 該当するとすれば3
411 名前:408 mailto:sage [2009/12/24(木) 19:16:52 ] >>409 長くなり過ぎた場合という表現にちょっと語弊があったかも知れません。 実際にはメソッドのブロック付き呼び出しが2〜3続くような場合で どうしても1行には収まらない場合、です。例をあげると files = Dir.glob("**/*.rb").select {|file| ... }.reject {|file| ... }.map {|file| ... } のようなパターンです。
412 名前:402 mailto:sage [2009/12/24(木) 19:18:31 ] >>407 ΩΩΩな、なんだってー。恐れ入りました。そんな手がw gem dependencyやgem specコマンドは--remoteのときには最新版からしかとれないんですね。 一旦gemをインスコしたらOK見られるようですが・・・
413 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 19:19:43 ] >>408 >>411 files = Dir.glob("**/*.rb").select {|file| ... }. reject {|file| ... }.map {|file| ... } って俺はやってるな
414 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 19:20:46 ] >>410 > メソッドチェーンでは改行は入れない >>411 であげたようなパターンでもそうなのですか? 自分はああいうパターンだとピリオドの後で改行しちゃうのですが、 一般的には推奨されない(マナーの悪い)書き方なのでしょうか
415 名前:408 mailto:sage [2009/12/24(木) 19:24:34 ] >>413 ピリオドの後は \ なくてもいいんですよね。 自分の場合意図的な改行であることを明示するために \ を付けてます。 というか、>>411 の例は最後の map が意味的におかしいですね、しまったorz
416 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 19:29:58 ] files = Dir.glob("**/*.rb").select{|file| ... }.reject{|file| ... }.map{|file| ... }
417 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 21:32:51 ] ワンライナー書いてるならともかく、どっかで区切れよと なぜそんなにつなぎまくるのかと
418 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 22:41:13 ] >>417 自分の場合はつなぐというより、 つながっていくという感じでついつい長くなってしまうw 返値を無駄にしたくないというか 変数の名前を processed_values とかにした場合も名前に引きずられて 途中の状態を入れたくないという雑念が生じ、無理してでも一連のチェーンで書いちゃう
419 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 01:09:13 ] Ping打ちたいんだけどどう書くの?
420 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 01:25:21 ] >>419 ttp://www.sakalab.net/prog-ruby/ruby-man-html-20080121/ping.html
421 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 01:35:21 ] 俺もそれ出そうかと思ったけど、ICMP使わないんだよな
422 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 01:38:51 ] わかりやすくていいじゃん
423 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 05:59:43 ] files = Dir.glob("**/*.rb") files.reject! {|file| ... } files.map! {|file| ... }
424 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 09:08:05 ] >>423 みたいに例示依存の回答する人なんなの
425 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 09:21:57 ] 実際には存在しないメソッドを使って質問したほうがいいな
426 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 09:54:59 ] 別にいいんじゃない? 破壊的メソッドが使える状況なのに気づかなかった初心者がいてもおかしくないし 役に立たないならスルーすればいい 回答者にエスパーを要求するっていうのはそういうことだと思う
427 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 12:03:27 ] 1.9 だと メソッドのピリオド前でも改行できるようになった 複数行のメソッドチェーンのピリオド位置をそろえられるらしい if とか class とか直後に識別子や式が必須のところは改行しても行が継続するとか そういう行継続のルールってマニュアルあるの?
428 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 12:16:41 ] 従来のルール 「改行までの箇所を読んで完結していると見なされる(パースできる)ことがないなら改行OK」 に追加されたのは「メソッド呼び出しのピリオドの前もOK」だけのはず。
429 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 12:18:40 ] あれ、>>428 のルールだけでは class Hoge で改行が許されるのは説明できないのか。
430 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 15:44:18 ] >>429 ん? 説明できてるように思うけど class Hoge って end で閉じるまで完結しないでしょ
431 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 16:16:30 ] 1.8.7p174 puts 1+ 2 これは3と出る。+がまだ完結していないから2までがまとまって解釈される。 puts(1+ +2) 同じく3。 puts 1 +2 これは1までで完結しているから1と出て、+2は単項演算して捨てられる。 puts(1 +2) これは unexpected tINTEGER, expecting ')' 次の行まで見て完結させてくれないのはどうして?