[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 05/09 14:42 / Filesize : 176 KB / Number-of Response : 723
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 34



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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

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自体同じような動作だが

260 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 07:57:34 ]
>>230
インデックスの仕方が微妙なせいで、記号とかアンダーバー含むと全然検索できないw
chm便利なんだけど、検索は本当に困る

261 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 10:17:38 ]
>>253 に関連して

a or next
a or raise

みたいなイディオム?をたまに見かける

262 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 10:30:03 ]
read or die

263 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 10:31:17 ]
>>254
意味がわからん。
>>253が間違えてるとは思えない自分に誰か救済の手を


264 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 10:33:27 ]
>>263をさらに撤回する ほんとうにすまない



265 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 13:54:41 ]
お前らミス多すぎるだろ・・・俺もミスってた

a = a or xは優先順位の都合で
(a = a) or xとして結合するからxの代入が起きない

a = (a or x)
a = a || x
と書くのが正しい

なんにせよ初期化のイディオムとしては、||=を使うこと
(簡単な解説を兼ねてorを並べたのが失敗)

falseの扱いは>>259の言う通り根本的な問題だから触れなかったけど
必要なら時はa = a.nil? && xとかやって
まあfalseが入ってるかもしれない変数にこの手の初期化はあまり行わないから普段は問題ない

266 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 13:57:09 ]
またミスったああああ

a = a.nil? && x
これダメ絶対、素直に後置してください・・・






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<176KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef