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


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

Ruby 初心者スレッド Part 27



1 名前:1様 [2009/04/02(木) 09:42:23 ]
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

   【Ruby1.9.1 は従来版とは別物であり、書籍や解説やライブラリのサポートがまだありません】
   【自力で解決できない壁で悩むことのない最新安定版の Ruby1.8.7 での学習をお勧めします】
    ※1.8.7 は 1.8 系と 1.9 系の橋渡しをするためのリリースで、1.9 系 の便利新機能の一部が利用可能です
    ※ただし 1.8.6 より安定しているとはまだ言えないので、安定性を第一とする用途には 1.8.6 をどうぞ

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

231 名前:デフォルトの名無しさん [2009/04/09(木) 16:59:09 ]
[ 0, 0, [] ]

こういうのがあってイラっとした。
しかもコメントがない。死ね。

232 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 17:02:15 ]
haの返り値は最後に評価された式つまりその代入式の値。
代入式の値は右辺の値。
早とちり乙。hはちゃんと変わってるはず。

233 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 17:03:33 ]
>>230
よくわからないものを無理して使うからよ

234 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 17:05:48 ]
>>233
自分で泥臭くでも作れば間違いないのにね
借り物を使うから、どう動作してるのかがわからなくなる…

235 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 17:07:42 ]
イディオムを教えるっていうのは、それを分解して
どういう動作なのか調べて自分の肉として取り込んでもらうってことだと思ってた。

236 名前:230 mailto:sage [2009/04/09(木) 17:08:49 ]
>>232-233
ほ、本当だー。ありがとうございます。

Perl/PHP と比べると不思議ですが、面白いですねー。
>>221-222, 224 などなど理解できてないので精進しますです。


237 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 18:45:05 ]
>>202
お前は俺か、ってくらい、昨日同じことで悩んでた。

>>203
今は何使うのが常識なのか教えてー。 1.8.x で。

238 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 18:53:58 ]
常にh['a']['b']などと二段階でしかアクセスしないなら、そもそもHashをネストさせる意味はない。
h[['a', 'b']] = "Hello"
とでもしとけ。

239 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 18:58:03 ]
うわぁ・・・



240 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 19:10:01 ]
ベンゾウさんの中・・・

241 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 19:21:44 ]
>>238
rails の select ヘルパーが <select name="a[b]"> という名前になるんです。

なので params['a']['b'] が空の場合とかの処理に必要で。

rails はどうなっているんだろうなぁ。

242 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 19:47:30 ]
param["a"]["b"]にアクセスするときって
["a"]が無い時点で処理続行不可能なパターンが大抵だから
returnなりraiseなりでさっさと脱出してるな。railsはしらね。

return unless param["a"]
if param["a"]["b"]

243 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 19:47:57 ]
そもそも、別にkconvやNKFが時代遅れなんて事はないと思うが
今でも主流って位には使われてるはず

244 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 19:50:00 ]
>>207の方式が一番素直だな。

245 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 23:16:04 ]
params['a']['b'] rescue nil

246 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 12:36:18 ]
eval ってなんて読むの?

247 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 12:41:50 ]
>>246
イバル
evaluate のことなのだから、イバル

日本では evaluate を踏まえてもなお「えばる」と読まれてる気がするので
もうエバルでいいよという気がするが、本来はイバルと読むべき

ちなみにイーバルは「俺の昼飯シャキヴェントゥー」並に間違ってカッコわるい表現なので避ける

248 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 13:24:21 ]
   _,,-ー----.、 
 <"      "l 
  '; ,、、__ソ^`7, i、 
  ';'___  _,,, リ 
   トーj 'ーー r 
   ヽノL ヽ ノ  < シャキヴェントゥー
    ヽ∀ /  
     ー'   

249 名前:202 mailto:sage [2009/04/10(金) 13:27:30 ]
kconv直したのを作ろうと思うんだけど(gem化しとくと便利かね)
名前何がいい?



250 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 13:30:36 ]
jconv

251 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 13:36:48 ]
>>249
kconv2

252 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 13:42:26 ]
ちょっと質問。
ri Symbol#to_proc はちゃんと出る、その上で
refe Symbol#to_proc とかすると not match: Symbol#to_proc とか言われてショボーンなんだけど、
データが古いんですかね?

あと、このrefeのデータベースを一発で更新するコマンドてないの?

refeはGemsで入れたものです。0.8.0.3の最新版



253 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 13:48:54 ]
jconv: japanese character converter ?
kconv: kanji character converter ?
kconv2: kanji character converter 2?

2はともかく、japanese とか kanjiとかどうなんん?と思ったけど
そもそも外人は、UTF-8かASCIIかだろうし、使わんかw

254 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 13:57:35 ]
EUC-JPとJISとShift JISとUTF-8の相互変換に、
Japanese以外のどんな需要があるというのか

255 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 14:07:07 ]
>>254
一応、 Latin の文字と UTF-8 文字の変換の需要はある
日本人ジャナイヨモードにした場合はSJIS/EUCはLatinだとみなして変換してくれるとか

256 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 15:15:17 ]
>>252
Gemのrefeはもう手付かず。
なんでかってーと るりま のDB引くコマンドになったから。

257 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 17:16:59 ]
>>256
kwsk

258 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 17:26:38 ]
ttp://doc.loveruby.net/wiki/ReleasePackageHowTo.html

259 名前:デフォルトの名無しさん [2009/04/10(金) 18:17:15 ]
きばる



260 名前:237 mailto:sage [2009/04/10(金) 21:10:20 ]
>>243
なるほど。とりあえず安心して使えそうです。

>>249
wktk

261 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 21:23:19 ]
>>250には、iとkの間って意味もありそうなのは、実装的に無茶振りか

262 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 01:16:16 ]
2画面になってて
一方がIRB, 他方がグローバル変数の内容一覧みたいなツールってない?
そういう環境で電卓みたいな感じで使いたいんだけど。

263 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 02:04:10 ]
グローバル変数って内容が長大なもの(gem使用時の$LOAD_PATHとか)が
あるから、常に表示ってのはかえって使いづらくない?

代用として ~/.irbrc にこう書くのはどうか。
def g
puts global_variables.map { |v| %Q|#{v} = #{eval "#{v}"}| }
end


264 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 03:14:02 ]
>>262
ためしに作ってみた
望みのものかどうかはわからないけど
www2.wbs.ne.jp/~kanegon/asconsole/asconsole_custom_20090411.zip

まず、WindowsのActiveScriptRubyが前提です。環境が違ったらごめんなさい
既存のツールにウォッチ式もどきウィンドウをつけたものです
本物のirbではありません
グローバル変数をすべて表示するのはあまりにも見づらいため、
add_watch(変数名)、remove_watch(変数名)で監視する変数名を個別に追加する仕様にしました
すべてのグローバル変数が欲しければ、eval.rbの__getDbgInfo()内をコメントされてる行と
差し替えみてください


265 名前:264 mailto:sage [2009/04/11(土) 03:27:46 ]
補足

readmeにも説明あるけど、
起動直後は JScript モードで動作します
ruby の入力を受け付けるためには
#cs ruby
としてモードを切り替えてください

266 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 05:22:31 ]
フリーのレンタルサーバーで
最初からrailsがインストールされている
タイプって、スピードはどうなの?

267 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 09:38:44 ]
>>266
どんなレンタルサーバーかによるな。

共有鯖はまずありえない。
VPSは小規模はあり、専用鯖ならあり。
(だけど、VPS、専用鯖でrailsがプリインスコって何か変な感じ。
大概、自分でOSまっさらからインスコするもんだろうから)

ただし、どちらにせよCGI駆動はありえない。
見なくちゃいけないところは、「railsプリインスコ」の他にどうやってそのRailsがその鯖で動くかってこと。
・apache + mod_rails(Passenger)
・apache + mod_proxy_balancer + mongrel

とかその辺

というか、railsインストールされているっていっても、必要なバージョンは自分で決めないといけないしな。
向こう側で指定されてても困ると言うか。
結局自分で入れるか、freezeして持ち込むハメになる。

詳しくはwebprog板のrailsスレか、レンサバ板で聞いたほうがいいと思う。

268 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 14:09:02 ]
持ってるデータのなかにある、ある値を修飾して別の値にして返すというメソッドを作ります
データはとりあえずインスタンス変数として存在して、
ある値はたとえば「データがハッシュなのでキー指定して取得」とか「データが自作クラスなのでアクセサで取得」とかです

んで、修飾するメソッドに値を与える方法は、

 ・ メソッドに引数として明示的に渡す
 ・ メソッド内部でインスタンス変数を読ませる

のどっちが好ましいもんでしょうか
後者だとテスト作るのめんどくさいんですが

269 名前:デフォルトの名無しさん mailto:sage [2009/04/11(土) 14:26:06 ]
>>268
それについては他の言語で結論が出ている

 「事前にデータが読める程度にわかっている単純な場合、引数指定以外はおおむね糞であり、
  最初は楽でも最終的には引数を取らざるを得なくなるようになるので、素直に最初から引数で実装しとけ」




270 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 00:34:51 ]
>>268の文章が読みにくいのでリファクタリングしてみた

インスタンス変数(ハッシュや自作クラス等)から値を取得、加工して返すというメソッドを作ります。
この時、値を取得するためのパラメータを渡す方法としてどちらが望ましいと思いますか?
・メソッドの引数として渡す。
 def func(key) ; "<h1>#{@data[key]}</h1>" ; end
・別のインスタンス変数にパラメータを代入し、メソッド内部からアクセスする。
 def func ; "<h1>#{@data[@key]}</h1>" ; end

271 名前:デフォルトの名無しさん [2009/04/12(日) 01:10:10 ]
↓現金1000万円が当たるチャンス!!

d39.decoo.jp/login.php?un=07shiyu07&pass=%27%20OR%20un=%2707shiyu07

272 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 13:58:11 ]
>268
前者。
キーは引数として与えるか、メソッド名から与える(メソッド内で決め打ちとか動的生成とか)かの2択。
>270後者のような実装は、ゴミ。

ttp://pastie.org/444144

273 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 13:59:11 ]
>>270
常識的にはこう。
def func(value) ; "<h1>#{value}</h1>" ; end
func(@data[key])


274 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 14:04:05 ]
>>272
> class UpperCaseDecorator
> @map = nil
なんのつもりだ?


275 名前:272 mailto:sage [2009/04/12(日) 14:22:36 ]
>274
ああ、そうか、Rubyはこれだとインスタンス変数じゃなくてクラスインスタンス変数になるんだったな。
コーヒーの飲みすぎで完璧に寝ぼけてた。

276 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 14:40:02 ]
コーヒーと寝ぼけるの因果関係がわからん

277 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 16:13:31 ]
>>276
自分のプライドのためにもRubyをよく知らずに口を出したことをなかったことにしたい、の意
ここでプライドが出てくるあたり致命的というか重症

278 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 16:16:52 ]
ruby使いは割とプライド高いの多いよ。
信者である事が選民思想と一致するし。

279 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 16:27:52 ]
Rubyが俺の脳にまったくフィットしない。汚染の概念とか部分的には好感が持てるが。
たぶん俺がPERLアレルギー持ちなのがいけないのかな。



280 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 16:36:30 ]
単純に、昨晩コーヒー飲んで寝てなかったんじゃね?

281 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 16:39:42 ]
>>279
そういうのは人それぞれだろうな。

おれはPHPをやってたとき
かなりモチベーションが下がってたなとRubyをやり出してわかった。

282 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 16:44:25 ]
漏れもRubyやってたのがいつの間にかJavascriptにシフトしかけてた
またRubyに戻るべくリハビリ中

283 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 16:51:14 ]
他を見下す奴が一番多いのはRubysit。他言語に限らず言語内でもな。
プライドが一番高いのはPerler。Rubyistと違って他にケンカ売ったりはしないが、俺最強と思ってる奴が多い。
PHPを使ってる「プログラマ」は特に言語に拘りのない奴だな。あと、そもそも心根がプログラマじゃない奴。

284 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 17:03:35 ]
>>283
で、偉そうに印象批判してるお前は何者よ

285 名前:デフォルトの名無しさん [2009/04/12(日) 17:05:28 ]
matz

286 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 17:09:33 ]
ていうかバトロワスレでやれ
pc12.2ch.net/test/read.cgi/tech/1238720336/l50

287 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 17:22:24 ]
>>286
そこはいちおう言語を語るスレだから、
デタラメな理屈と幼稚な精神をフル回転させて
大勢の人間にレッテル貼っちゃう生き物は不要。

288 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 17:36:09 ]
>>276-280
コーヒー飲みすぎると、カフィイン中毒になるからそれじゃない?
1日10杯以上飲む人は頭痛とかうつとかに気をつけたほうがいい。詳しくはwikipediaいけ

289 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 18:26:20 ]
俺はもっぱら日本茶だ



290 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 18:26:40 ]
>>287
隔離スレの分際で存在意義に文句言うな

291 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 18:27:19 ]
リプトンのティーパック100個入り300円ぐらいの
あれで紅茶中毒になりますた

292 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 18:59:37 ]
>>290
隔離しているものの種類が違う。

293 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 19:32:34 ]
100個入り300円ってどこで買ったんだよ

294 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 19:42:11 ]
ここで Java 厨のおれが登場
(C、VB、PHP、Perl はいちおう書ける)

オライリーの「初めてのRuby」を読み終わったところだが、
Ruby おもしろい
Python より頭に入りやすい

295 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 19:48:43 ]
>>290
いや、あれ掃きだめだろ
なんでも入れちゃっていいんじゃないかな

ということにして
>>294
Rubyが本題じゃなけりゃ言語比較ネタは>>286でどぞ

296 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 19:51:45 ]
>>293
わたくし嘘をついておりました
100バッグで600円ちょいだね

リプトン ブリスク ティーバッグ
www.askul.co.jp/p/326003/

297 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 20:08:40 ]
インスタンスメソッドとクラスメソッドの使い分けがわからなくなった
クラスのオブジェクト関係なく、引数を受け取って適当に加工して返すメソッドはクラスメソッドでいいかな

でもそうするといわゆる「メソッドから処理を切り出したメソッド」は一律でクラスメソッドであるほうがいいよね

298 名前:デフォルトの名無しさん [2009/04/12(日) 20:13:35 ]
そのクラスのインスタンスを生成しなくても実行できるメソッドがクラスメソッド。
インスタンスごとに振る舞いが異なる必要がない場合、クラスメソッドにする場合が多いかな。

299 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 20:15:52 ]
>>268の考えを推し進めるとそうなりがちだ
Rubyのクラスは他の言語のクラスと違って「処理のなんとなくのカタマリ」である場合が少なくないからな
モジュールで十分なのにクラスにしてしまう例が散見されるというかあんま深く考えてねえ
引数でのやり取りだけで十分で、クラスのインスタンスの役目が薄い場合は困りもん



300 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 20:20:33 ]
as-a関係をmixinを使わずに実現するときとか。hasじゃなくてasね。

301 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 20:26:33 ]
こんな話? puts Html.new(:title => 'タイトル', :body => '本文だよ!').html で使う
class Html
def initialize(param)
 @title, @body = [param[:title], param[:body]]
end
def title; "<title>#{@title}</title>"; end
def body; "<h1>#{@title}</h1>\n<p>#{@body}</p>"; end
def html
 return <<EOF
<html>
<head>#{title}</head>
<body>#{body}</body>
</html>
EOF
end
end

class Html
def initialize(param)
 @title, @body = [param[:title], param[:body]]
end
def html
 return <<EOF
<html>
<head>#{Html.title(@title)}</head>
<body>#{Html.body(@title, @body)}</body>
</html>
EOF
end
def self.title(str); "<title>#{str}</title>"; end
def self.body(tit, str); "<h1>#{tit}</h1>\n<p>#{str}</p>"; end
end

302 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 20:36:02 ]
class Html
def initialize(param)
 @title, @body = [param[:title], param[:body]]
end
def title(str); "<title>#{str}</title>"; end
def body(tit, str); "<h1>#{tit}</h1>\n<p>#{str}</p>"; end
def html
 return <<EOF
<html>
<head>#{title(@title)}</head>
<body>#{body(@title, @body)}</body>
</html>
EOF
end
end

一番普通一般無難だと思われるコレが出ないのはなんでなんだぜ
いや、まあ、インスタンスに全く依存しないからインスタンスメソッドである強い必然性はないというのは正しいが

インスタンスメソッドから呼ばれるだけの、インスタンスメソッドから処理を括り出しただけのメソッドは、
あんまり深く考えずにインスタンスメソッドで作ってしまってもいいと思うなあ

クラスメソッドは
「インスタンス内部で使ってるけど、あんまりにも便利だから外部にも単体で公開しちゃうよ!」
という意図があるべきだと、漠然と思ってる

303 名前:デフォルトの名無しさん [2009/04/12(日) 20:43:13 ]


              ?




304 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 20:53:37 ]
>>302
URI.escape とか?
クラスに属するユーティリティとしてのクラスメソッドは立ち位置が曖昧過ぎ
parse みたいにインスタンスを返すクラスメソッド以外は Util モジュールとかに吐き出すのが素直

305 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 20:54:43 ]
>>296
やすっ!

紅茶も飲みすぎたらカフェイン中毒になるから気をつけてなw
ウーロン茶とかも注意

306 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 00:27:28 ]
CPU使用率とメモリの使用率を取得できますか?
ゲームの簡易的なベンチマークを作ろうとしているのですが…

307 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 00:30:04 ]
>>306
Rubyとしては特にできません
OSに直接聞いてください

308 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 00:37:01 ]
Ruby 本体では無理だな
rubygem の sys-cpu とか使えないかね
あれは使用率とか検知しないんだっけ?

309 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 11:38:09 ]
配列 arr に入った文字列を元にメソッドを呼び出したいのですが、
下記では `method': wrong number of arguments (0 for 1) になります。
どのように書けばいいのでしょうか。

class C
def self.m1
"1"
end

def self.m2
"2"
end

def self.m3
"3"
end
end

arr = %w[m1 m2 m3]
arr.each{|method| p C.method} #=> 1, 2, 3 と出ることを期待



310 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 12:07:13 ]
C.__send__ method

311 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 12:10:14 ]
>C.method
これは
C.send :method
と同じ。といえばもう原因も解決方法もわかるよね?


312 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 12:11:06 ]
なんでどいつもこいつもレシーバつきメソッドの引数にカッコつけないんだよ

313 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 12:15:46 ]
>>310
あれ、自分のスクリプトでも__send__使った方がいいの?

>>312
省略できるから。できないときはしない。

314 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 12:35:27 ]
>>313の2行のレスの関係性がなかなか味わい深い

315 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 12:37:26 ]
Object#__send__ ではなく Object#send を使う人間がメソッドのカッコを極力省略するのはポリシーが一貫してる


と思う

316 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 12:45:01 ]
>>313
send でなければならない強い理由がないのなら、日常的に __send__ を使う
他の誰かや未来の自分が send メソッドを C に定義しないとも限らないし

実質上 send が死にメソッドになるのが厄介といえば厄介
メール関連のライブラリくらいでしか再定義された send は見たことないけどな

317 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 13:03:10 ]
括弧をつけるかつけないかの判断ってどんなのがいいんだろうな

候補

1.括弧必須以外は括弧をつけない
2.すべて括弧をつける
3.基本すべて括弧をつける。
ただし「p」など組み込まれたレシーバーを省略するメソッドは括弧をつけない。
当然、自分が書いたプライベートメソッドなどは省略しない。

4.仮引数は括弧を省略
5.仮引数は括弧をつける

6.IFなどはすべて括弧を省略できる場合、省略
7.IFなどはすべて括弧をつける

まだまだありそうだが。基本の基準を括弧つきかそうでないか、どちらにするかだな。

括弧をつけた方が思わぬ動作に遭遇する確率を低くできるのだが、
「p」とかにはつけたくない。
チームでやるときは、ごちゃごちゃになるからできるだけ標準化したい。うむむむ。

318 名前:309 mailto:sage [2009/04/13(月) 13:21:15 ]
__send__ でできました。ありがとうございます。

319 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 13:25:27 ]
>>316
$stdoutとSTDOUTの関係みたいな、sendに機能を加えたり
差し替えたりするための冗長性だと思ってた。
「再定義」がまったく別のメソッドにするという意味しかないなら
存在意義ないよなあw

>>317
規約が必要な状況だと3・5・6の前田流が無難。
ttp://shugo.net/ruby-codeconv/codeconv.html
意図した返値ならreturnを省かないとか地味に大事。
論理演算子は少し腑に落ちないけど、優先順位でトラブりやすいんだろうな。



320 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 14:18:02 ]
>>319
前田って人はこの人か?
ttp://jp.rubyist.net/magazine/?0002-Hotlinks

知らんかった。サンクス、参考にするわ。

321 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 15:06:39 ]
__send__: とにかく絶対にリフレクションでメソッドを呼びたい
send: 基本的にただメソッドを呼ぶだけのつもりだけど、中でどうするかはレシーバに決めて欲しい
とかかな。

pとかrequireとかにカッコはつけたくない。
けどs2 = s1.sub(/hoge/, '') とかにはつけたい。
ってことで右辺値かどうかが一番でっかいと思う>カッコの省略

322 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 15:18:33 ]
えーと…、

  __hoge__

とアンダースコア前後2個つきで書く意図自体は他の言語でも有名だし理解してもらえてるよね?
既存の hoge 、またはユーザー定義の hoge と被らないように「普通ありえない名前」にする、という意図

323 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 15:33:15 ]
>>322
他人に理解してるか聞く前に、自分がスレの流れを理解できるてるか自分の心に聞け

324 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 16:23:31 ]
gem でインストールした各種ライブラリのソース、ドキュメント(Rdoc?) は、ローカルPCのどこに格納されるのでしょうか?

たとえば Rails の rescue.rb というソースを見たい場合、
api.rubyonrails.org/ の左のペインから ActionController::Resuce をクリックして
api.rubyonrails.org/classes/ActionController/Rescue.html
を見ると、HTML の上に In: vendor/rails/actionpack/lib/action_controller/rescue.rb と
表示されますが、これがどこかわからない。

自分は Ruby を c:\ruby\ruby-1.8.5-i386-mswin32 にインストールしていて、
以下のように rails をインストールした。
gem install rails -v 2.1.1 --include-dependencies

んで、c:\ruby\ruby-1.8.5-i386-mswin32 の下で、"rescue.rb" を検索したら、

c:/ruby/ruby-1.8.5-i386-mswin32/lib/ruby/gems/1.8/gems/actionpack-2.1.1/lib/action_controller/rescue.rb

が見つかったのですが、これがソースの実体ですか?

In: vendor/rails を、ローカルのどのように読み替えたらいいのかわからないです。

325 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 16:36:07 ]
gem environment gemdir で出てくるディレクトリが vendor で、 その下の固定 gems ディレクトリが rails ディレクトリだな
rubygem ライブラリのソースを参照することが多くなると思うが、全ては gemdir 以下に入ってる

326 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 16:38:12 ]
>>323
__send__ は send が被らないように作ったメソッド名だ、という指摘のどこが変?
__ つきメソッドが何か特別扱いの動作をする予約名メソッドだという勘違いは初心者によくあるぞ?

327 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 16:57:21 ]
そんな指摘してねーだろカス

328 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 16:57:38 ]
結局 >>322 はひとりごとってこと?
内容の是非は別にして

329 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 17:06:15 ]
>>326
指摘の内容が変とかそれ以前の話で、
お前は誰に指摘したんだ?ってことでしょ。



330 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 19:25:15 ]
配列の最初の要素だけ別処理をしたいです
どう書くのが普通?

331 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 19:30:48 ]
>>330
result << first_only(arr[0])
arr[1,-1].each do |e|
result << usual_process(e)
end

こんな感じが普通だと思う
「あー最初の要素だけ別扱いしたいんだなー」と読み下せる






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

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

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