1 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 08:39:14 ] プログラミング言語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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
159 名前:デフォルトの名無しさん [2010/02/03(水) 16:59:18 ] puts ["hoge"][0] とやると「hoge」が出力され、0以外だと「nil」が出力されるのですが この構文自体がどういうものなのか分かりません。 なにかの省略形とかなのでしょうか?
160 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:07:50 ] >>159 そんなへちょい例文作ったとこどこよお母さん一言文句言っちゃるわ a = ["hoge"] puts a[0] つまり配列の 0 要素目
161 名前:159 [2010/02/03(水) 17:14:43 ] >>160 やはり配列でしたか…。こういう記述も許されるんですね。 ありがとうございます。
162 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:16:58 ] > こういう記述も許されるんですね。 というか配列リテラルで直接要素参照する意味はまずない むしろ嫌がらせに近い
163 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:28:30 ] pc12.2ch.net/test/read.cgi/tech/1155031689/ 661 デフォルトの名無しさん [sage] 2009/09/04(金) 08:12:26 ID: Be: Windows用Rubyは MinGW版が速いと聞いてRuby on Railsで試してみた - yuum3のお仕事日記 d.hatena.ne.jp/yuum3/20090805/1249452345 antoniocangiano.com/wp-content/uploads/2009/08/mri_kri_total_runtime.png mingw版のほうが速いんだってさ 664 デフォルトの名無しさん [sage] 2009/09/06(日) 21:15:00 ID: Be: Rails遅いのかーバージョン下げるかなー 665 デフォルトの名無しさん [sage] 2009/09/06(日) 22:06:08 ID: Be: 913 nobodyさん [sage] Date:2009/09/06(日) 14:23:30 ID:??? Be: >>905-907 本当だ。なんだこれ? mswin32版のRuby 1.8.7-p160が遅すぎる件 - 那由多屋 開発日誌 d.hatena.ne.jp/nayutaya/20090601/1243848756 L'eclat des jours(2009-04-22) www.artonx.org/diary/20090422.html (コメ欄) 666 デフォルトの名無しさん [sage] 2009/09/06(日) 23:28:30 ID: Be: 何年も前から言われてることに反応して欲しいのかな 667 デフォルトの名無しさん [sage] 2009/09/06(日) 23:53:35 ID: Be: 何年も前じゃないだろ 670 デフォルトの名無しさん [sage] 2009/09/07(月) 06:40:46 ID: Be: >>666-667 >>665 がその前もコピペしないからわからないが、どうやら、p160にうpだてすると、 Railsのviewの処理が100倍遅くなるらしい。今年に入ってからの話。
164 名前:デフォルトの名無しさん [2010/02/03(水) 18:15:37 ] >>158 どうもありがとうございました このサンプルで動いている環境もあったので混乱していましたが 使っているバージョンが違っておりました
165 名前:デフォルトの名無しさん [2010/02/03(水) 22:07:55 ] はてなブックマーク(エクスポートしたデータ)から タグを指定して、一部を抽出するプログラムを書きたいです。 require 'rubygems' require 'hpricot' require 'open-uri' doc = Hpricot(open("dump.htm")) (doc/:a).each do |para| if para.attributes['tags'] = "microsoft" puts para end までは書いたのですが、別のファイルに保存する方法が分かりません。 よろしくお願いします。
166 名前:デフォルトの名無しさん [2010/02/03(水) 22:14:09 ] open('output', 'w') do |out| ... end の中に最後の4行をまるごと入れて、puts を out.puts に。
167 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 22:35:55 ] >>166 ありがとうございます。出来ました。 しかし思ったような結果ではなかったので 上記のプログラムでは駄目なのかもしれません。 引き続き、ご相談をお願いします。 ファイル内に <dt><a href=”” tags=””></dt> <dd>テキスト</dd> が繰り返されています。 タグが一致したら、上記全体を抽出したいのですが これはhpricotで出来るのでしょうか? それともxml パーサーのような物が必要なのでしょうか?
168 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 22:39:45 ] >>169 と>>201 を後出し条件のために予約
169 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 22:42:32 ] Oh翼くんロングパス >>167 本当にしたいことを言え
170 名前:デフォルトの名無しさん [2010/02/03(水) 22:47:08 ] dt = a.parent dd = dt.next_sibling つーかdtとddが出てこないのはputsをout.putsに変えなくても分かるはずだが
171 名前:デフォルトの名無しさん [2010/02/03(水) 22:47:53 ] >>169 > 本当にしたいことを言え うーん、質問が意味不明ですか? はてなブックマークのデータで <dt><a href=”何か” tags=”microsoft”></dt> <dd>コメント</dd> の部分を抽出したいという事です。 >>165 >>166 だと <a href=”何か” tags=”microsoft”>しか抽出できません。 dtから/ddまでを抽出したいのです。 お願いします。
172 名前:デフォルトの名無しさん [2010/02/03(水) 22:53:52 ] >>170 出来ました。 初めてのrubyなので、テンパってしまいました。 ありがとうございました。
173 名前:172 [2010/02/04(木) 00:10:07 ] すみません。まだお願いします。 tagsが「microsoft」のような英字だと上手く行ったのですが 「これはすごい」のような日本語(全角)だと上手くいきません。 $KCODEをSJISに設定してみたりしたのですが・・・どうすれば良いのでしょう?
174 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 00:16:58 ] 悪いこと言わないから一通りRubyの解説なりなんなりを読め おおむね全部書いてある
175 名前:173 [2010/02/04(木) 00:29:01 ] Ruby 逆引きハンドブック(るびきち) を眺めているんですけど レベルが合ってないのでしょうか?
176 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 00:35:15 ] たのしいRuby → Railsレシピブック → るびきち と読みましたが、Railsが全くわかりかねます
177 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 00:42:02 ] レシピブックやらクックブックやらは基本ができてないと 小手先だけになって変更できなくなって詰まるのに >>176 Railsは実際に作るものがないと知識としては全く覚えきれない
178 名前:デフォルトの名無しさん [2010/02/04(木) 00:42:06 ] あらら、ちょっとレベルが上過ぎでしたか。 申し訳ない。 たのしいRubyを購入したいと思います。 ・・・最後におまけで >>173 にお答えいただけると、ありがたいです。
179 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 00:46:07 ] $KCODEはそのスクリプトに解釈させたい日本語文字エンコーディングを指定する その指定に従って、正規表現などの「バイト列と文字区切りの関係」を調整する つまり、この場合の日本語はブックマークHTMLファイル中の日本語だけだから、 HTMLファイルの文字エンコーディングを指定すればいい はてなブックマークのブックマーク形式のエクスポートHTMLファイルは UTF-8 だから、 $KCODE='u' とするか、 ruby -Ku で起動する
180 名前:デフォルトの名無しさん [2010/02/04(木) 01:06:36 ] >>179 > $KCODE='u' とするか、 ruby -Ku で起動する rubyのプログラムの方も、BOM無しのUTF-8で保存したら 上手くいきました。 基本から勉強したいと思います。ありがとうございました。
181 名前:149 mailto:sage [2010/02/04(木) 02:11:00 ] >>156-152 サンクス 環境書き忘れた。 大分前からアップデート暇なくてこのまま使っているから、今のは直っているのかもしれんな。 linuxだとというかdebian系だとaptとかでアップデート楽だからいいけど、 Windowsだとアップデートが面倒でかなわん。 ActiveScriptRubyで入れたものをmingwとかで上書きしちゃっていいものか mingwでgemとかも込みのパッケージってあったけ?
182 名前:149 mailto:sage [2010/02/04(木) 02:11:46 ] ごめん、環境書かずに送信したwww ruby 1.8.7 (2008-06-20 patchlevel 22) [i386-mswin32] 自分で言うのも何だがふるっ
183 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 02:16:49 ] うちの cygwin ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin]
184 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 02:22:46 ] >>176-178 Railsやりたいんなら、今のRails入門のオススメは Head First Railsということになってる(でいいよね?) O'Reilly Japan - Head First Rails www.oreilly.co.jp/books/9784873114385/ amazon.co.jp/dp/4873114381/ Head FirstがRuby入門者向けに書いてあるかはしらんが、 その前にRuby入門の段階ならRailsの前にRubyの入門本をもっと読むべきだと思われるw
185 名前:149 mailto:sage [2010/02/04(木) 02:29:16 ] >>183 手持ちのcygwin環境も同じバージョンだった。 gem入れてない環境だからかわからんが、cygwinで待機状態だと全然軽いほぼ0%。 csrss.exeも出てこないわ >>156 とりあえず、簡単な方のReadlineのバージョン上げてみる
186 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 13:36:20 ] ruby 1.8.6 (2009-08-04 patchlevel 383) [i386-mingw32] >gem i hpricot Building native extensions. This could take a while... ERROR: Error installing hpricot: ERROR: Failed to build gem native extension. C:/Ruby/bin/ruby.exe extconf.rb checking for stdio.h... no *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=C:/Ruby/bin/ruby 続きます。
187 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 13:37:36 ] >>186 nokogiri使え
188 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 13:38:08 ] ↑ ワロタ
189 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 13:38:18 ] 続きです。 Gem files will remain installed in C:/Ruby/lib/ruby/gems/1.8/gems/hpricot-0.8.2 for inspection. Results logged to C:/Ruby/lib/ruby/gems/1.8/gems/hpricot-0.8.2/ext/fast_xs/gem_m ake.out すいません、ググってみたのですが分かりません。 どうやったらhpricot入れられますか?
190 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 13:44:11 ] >>189 Hpricot は本来の作者がメンテナンスを諦めた Nokogiri 使うよろし どうしても Hpricot を使わないといけないのなら gem でバイナリが用意されてる mswin32 の Ruby をインストールするか あるいは mingw32 Ruby においてコンパイル可能にする mingw32 Ruby の DevKit を入れれ ttp://d.hatena.ne.jp/kitamomonga/20100130/ruby_mingw32_needs_make_when_install_watir
191 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 13:47:13 ] RubyとしてActiveScriptRubyをインストールするのがスレ的にいちばん簡単だと思う
192 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 14:00:55 ] >>190 ありがとうございます! 諦めてnokogiri使わせて頂きます。
193 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 14:22:47 ] OneClick Installer の被害者の方々が続々と
194 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 16:44:00 ] なんでmswinのバイナリがあるのにコンパイルしようとしてんだろ 前も思ったけどrubygemsってそのへんの判別どうなってんの?
195 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 17:17:21 ] >>194 gem作成者がWindows向けかどうかを手で条件判断してる install_win_binary if RUBY_PLATFORM =~ /win32/ とか この場合、 mingw32 はマッチしないから、用意したWindowsバイナリ(mingw32でもたぶん動く)は使われずに 自前でコンパイルするように分岐する Windows かどうかの判定は install_win_binary if RUBY_PLATFORM =~ /win|mingw/ みたいに mingw を含めるようににしろ、と少し前から言われてる これに沿ってない、あるいはそう言われる前の古い gem パッケージは、 mingw32 でも「バイナリパッケージなし」と判断されてコンパイルプロセスが走る いっそそういうヘナチョコ gem も許してコンパイルを受け入れよう、というのが>>190 でも書いてある DevKit
196 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 17:26:42 ] >>195 ありがとう、雛形作成ツール or Rakefile手書きした人の責任ってことか Rakeでis_windows?みたいなの用意していてくれれば解決だった気がする
197 名前:デフォルトの名無しさん [2010/02/04(木) 17:56:02 ] win で判定しちゃだめだ。 Darwin (= MacOSX) が引っかかる。
198 名前:デフォルトの名無しさん [2010/02/04(木) 17:59:08 ] プラットフォームの判別 jp.rubyist.net/magazine/?0017-CodeReview#l17 さすがに bccwin は外してもいいような気がする。
199 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 18:07:35 ] っていうかこの用途での RUBY_PLATFORM の利用はいいかげんやめたほうが… p の表示結果を横取りして解析するようなむず痒さを感じる
200 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 18:51:01 ] ruby -rdebug hoge.rb でデバッグするとき、gdbの--tty=みたいなことをしたいのですが、どうすればいいでしょうか? デバッガへの入力(pやbreak等)と出力(pの結果等)はそのままrubyを起動した端末で、 hoge.rbの標準入出力は別の端末につなぎたいのです。
201 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 19:20:47 ] >>199 じゃあ何使ったらいいの バイナリの判定ならCONFIG["RUBY_SO_NAME"] とか?
202 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 21:00:16 ] [1,2,3].map(&:to_s) => ["1", "2", "3"] 何が起きてる?リファレンスを嘗め回したがさっぱり
203 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 21:09:45 ] &の右側がProcオブジェクトでないときはto_procを呼ぶ。 :fooというシンボルのto_procはcall xするとx.fooの意味になるprocを返す。 例 > :to_s.to_proc.call 1 => "1" これでわかる?
204 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 21:11:02 ] あー、どこを見ればそれがわかるのか、というのは俺も教えてほしい。
205 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 21:15:43 ] 検索しにくい機能はこれだから困る 「Ruby1.9 ではイテレータをブロックなしで呼び出すと Enumerator を返すよ機能」と呼ぶ irb> [1,2,3].map(&:to_s) ["1", "2", "3"] irb> [1,2,3].map{|e| e.to_s} ["1", "2", "3"] irb> [1,2,3].map(&:next) [2, 3, 4] irb> [1,2,3].map{|e| e.next} [2, 3, 4] irb> [1,2,3].map{|e| e.next}.map{|e| e.to_s} ["2", "3", "4"] irb> [1,2,3].map(&:next).map(&:to_s) ["2", "3", "4"]
206 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 21:17:23 ] >>204 doc.okkez.net/ あとは、リテラルを知っておくと調べたいことが明確になるかな。 ところで上のマニュアルで検索すると、結果が出るまで数十秒くらい待たされるんだが、どうなってんの? 特に検索に失敗した場合の結果報告が遅すぎる。
207 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 22:10:58 ] >>203 .call 1 がどこから来るのか分からん
208 名前:デフォルトの名無しさん [2010/02/04(木) 23:20:11 ] Rubyで書けばこんな定義。 class Symbol def to_proc proc {|obj, *args| obj.send(self, *args) } end end 実際1.8.6までのRubyにActiveSupport(Railsで使ってるRubyコア拡張) 入れると↑のように定義される。
209 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 23:30:59 ] >206 ごめん。 全てのデータを読み込んでるから遅い。 チューニングしたいけど、まとまった時間がとれない。
210 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 00:26:44 ] [1,2,3].map(&:to_s) は [1,2,3].map(&proc{|obj| obj.send(:to_s) })になると。 *argsはブロック引数が2個以上のときか > ["abc","def","ghi"].each_with_index(&:slice!) => ["bc", "df", "gh"] 理解。
211 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 00:43:06 ] 98%くらいは>>205 のブロックつきメソッドの短縮表記目的だけどな 正確な動作を覚えておくと便利なことはあるだろうね
212 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 02:11:15 ] わかりにくいのはSymbol#to_procのほうじゃないか
213 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 02:24:19 ] わかりにくいというか、ぶっちゃけわけがわからないよね
214 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 04:33:05 ] sort_by(&:length) とか便利
215 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 09:16:02 ] どうせならEnumerable#reduce/injectみたいに &無しで実現してもらいたかった昨日
216 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 09:19:42 ] >>213 >>205 だと理解しているうちはいいけどな SymbolかProcになるって時点で変だ 目を覚ませって感じではある
217 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 09:24:14 ] 簡潔さを追求しすぎてパァール化してるな
218 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 09:34:51 ] イテレータなんて古代言語使われると混乱しちゃう それと>>202 は&で:to_sをブロックとして扱おうとしてるだけだから 別にブロックなしというわけでなくEnumeratorも関係なくね
219 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 09:35:36 ] ところで>>206 で配布してるchmファイルってみんな見れてるのか? 開くとき他のchmファイルと違って「セキュリティの警告」がでるし 開いても本文カラムが「取り消されたアクション」か 「ページを表示できません」のいずれかにしかならん 以前は ttp://elbereth-hp.hp.infoseek.co.jp/ruby.html のchmファイルを使っていたが問題はなかった WindosXP SP3 なんだがどうしたものか
220 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 09:44:36 ] >219 ごめん。Windows持ってないんで検証出来ないんだ。 なんかチェックボックス外したら使えるという話は聞いたことがある。 手元のDebianではちゃんと見れた。 XPのSP3以降?ではそういう警告が出るようになったらしい。 Vistaで警告が出てたときはチェックボックスを外したら使えた。
221 名前:220 mailto:sage [2010/02/05(金) 09:46:14 ] 220で書いてるVistaはたまたまそこにいた人が使ってたやつね。
222 名前:デフォルトの名無しさん [2010/02/05(金) 11:01:26 ] 終わった話だけど。 block = proc {|x| x.to_i } %(1 2 3).map(&block) の &block のところに &:to_i と書けるという話であって、 ブロックを取らないならEnumeratorを返すという話ではない。 # そもそも1.8.7のmapは互換せ(ry
223 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 11:14:26 ] >チェックボックス もしかしてIEのセキュリティレベルを落とさないと見れない仕様か デフォルトの状態でリファレンスマニュアルが読めないとか ここまでくるとドザーに対する嫌がらせに近いな
224 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 11:44:27 ] >>223 嫌がらせはそのへんにしとけ よく知らないけどセキュリティ絡みならそのchmのプロパティで「ブロックの解除」を試してみたら?
225 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 11:48:33 ] chm 自体がそういうものになった なんでもかんでも Windows 叩いてオナニーしてる厨には理解できんだろうが ttp://support.microsoft.com/kb/902225/ja > これは正常な動作であり、セキュリティ更新プログラム 896358 および > Windows Server 2003 SP1 のインストールの結果として予期されている動作です。
226 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 12:13:05 ] >>219 Windows開発者にはかなり既知な問題なのですが、 chmファイル単体をそのままネットから落とすと、セキュリティがらみのフラグがつくんです。 exeファイル単体をネットから落とした時もいちいち確認してくるよね? >>224 もいってるけど解決策はchmのプロパティでブロックを解除してやる
227 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 12:25:52 ] chm自体が規格として取り残されたというか… そもそも表示にIE使う時点で将来的に規定事項だったその時がやって来ただけというか…
228 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 12:29:03 ] 配布する人が 「XPやVistaや7の人は俺を信用してチェックボックス外してね」 と警告するしかないな
229 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 14:46:34 ] zipped htmlでくれ
230 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 14:50:20 ] 全文検索が問題なんだよね 標準で検索フレームがつくのがchmの大きな利点 それさえ別途便利に使えれば素のHTMLの配布で問題ない というかchmの検索はもうちょっと賢くなって欲しい というか一般語の検索に特化されててプログラミング用語やトークンの検索に向かねー
231 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 15:38:21 ] >>224 , >>225 , >>226 ありがとう また一つ賢くなった
232 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 16:18:43 ] pc12.2ch.net/test/read.cgi/tech/1155031689/ 【ActiveScript】RubyをWindowsで使うスレ【GUI】
233 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 19:23:17 ] :to_i.to_procがproc{|x| x.to_i}になるってのは マニュアルのどこに書いてあるの?
234 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 19:50:56 ] >>233 ttp://doc.okkez.net/static/191/class/Symbol.html > self に対応する Proc オブジェクトを返します。 「self に対応する Proc オブジェクト」ってなんじゃらほという疑問の答はむろん書いてない Ruby のマニュアルなんてそんなもんだ
235 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 20:16:44 ] >>234 そこはすでに読んだ〜よ
236 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 20:36:29 ] 素人はこれだから Rubyはソースコードに全て書いてある /* * call-seq: * sym.to_proc * * Returns a _Proc_ object which respond to the given method by _sym_. * * (1..3).collect(&:to_s) #=> ["1", "2", "3"] */ static VALUE sym_to_proc(VALUE sym) { return rb_proc_new(sym_call, (VALUE)SYM2ID(sym)); } ほら書いてあった
237 名前:デフォルトの名無しさん [2010/02/05(金) 20:43:18 ] selfで示されるメソッドを呼ぶProcを返す。 自身で示されるメソッドを呼ぶProcを返す。 ならまだ分かるか。さあるりまにフィードバックしよう。
238 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 20:51:32 ] >>236 利用法しか書いてないのがそれっぽいといえばそれっぽいな Cレベルのコメントでもそれなのか
239 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 20:54:53 ] [1,2,3].map(&:to_s) [1,2,3].map(&:to_s.to_proc) [1,2,3].map(&Proc.new {|obj| obj.to_s }) [1,2,3].map{|obj| obj.to_s } やっと腑に落ちた 横レスだけどみんなありがとう
240 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 20:55:08 ] いや一応、これで必要十分なコメントではあると思うぞ Symbolクラスのメソッドとして単体で吟味したときわけわかめになるだけで それこそ :mes.to_proc #=> proc{|o| o.mes} と一言書いてもらえてれば納得度が上がったと思う
241 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 21:05:08 ] lines.collect(&:split/,/)とかやりたい
242 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 21:18:45 ] [1,2,3].map(&:to_s.to_proc) から [1,2,3].map(&Proc.new {|obj| obj.to_s }) が腑に落ちない
243 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 21:27:11 ] >>242 >>240
244 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 22:05:10 ] >>242 カッコで括って評価の順序を明確にすれば理解出来るか 1. [1,2,3].map(&:to_s) 2. [1,2,3].map(&(:to_s.to_proc)) 3. [1,2,3].map(&(Proc.new{|obj|obj.to_s}))
245 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 22:05:51 ] ん? :mes.to_proc #=> proc{|o| o.mes} が腑に落ちないと言ってるんだが?
246 名前:デフォルトの名無しさん [2010/02/05(金) 22:08:54 ] 「Symbol#to_procがそういうprocを返すように定義されている」
247 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 22:09:04 ] そりゃ失礼した。 どう腑に落ちないのかはよくわからんが。
248 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 22:14:26 ] 仕様です→なんでそんな仕様? ってことでしょ >>245 はこんなとこじゃなくMLででも聞け
249 名前:デフォルトの名無しさん [2010/02/05(金) 22:18:12 ] なんでこういう仕様かっていうと[1,2,3].map(&:to_s)って書くため 気持ち悪いのは元々Railsだから仕方ない
250 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 22:26:57 ] 名前 名前、ばかにする ばかにする、あんた、名前 1だけ・・・ 出会い頭に、おたんこなす宣告から、あんたばかぁ、から丁寧にばかにするまで レパートリーに富んだ構文糖に乾杯 >> 244
251 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 22:27:02 ] obj.methodsでシンボルの配列が帰ってくるから 関連がないということもない と言えないこともない
252 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 22:58:44 ] いや、どこにそういう仕様だと書いてあるのかってことなんだが
253 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 01:21:49 ] AがnilだったらAにxを代入 A = x unless A これより簡潔な書き方ってあります?
254 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 01:25:43 ] おま、それ x が真だったら短絡して A = x と同じ意味になっちゃうぞ
255 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 01:28:33 ] あれ?そうなっちゃいます? rubyってifとかunlessを倒置して後ろに置いてるのをよく見ますけど。
256 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 01:41:21 ] 弁解の余地もございません >>254 は撤回した上で吊ってきます unless修飾子なんか嫌いだグスン
257 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 02:05:03 ] >>253 a = a or x a ||= x
258 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 02:54:23 ] >>137 了解です。できれば Ruby/GTK2 から扱いやすいプロッターがあるといいのですがなかなか見つけられません。
259 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 03:02:50 ] >>257 はfalseでも動作するので注意 まあ元のunless自体同じような動作だが