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


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

Rubyについて Part 33



1 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 16:10:50 ]
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。

Ruby Home Page
www.ruby-lang.org/ja/

= 前スレ
Rubyについて Part 32
pc11.2ch.net/test/read.cgi/tech/1215531152/

過去スレ・関連スレは >>2-

152 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 20:57:19 ]
>>148
動作確認済みのPerl 、Ruby について
【Ruby】
Ruby 186-25

こんなバージョンのRubyは存在しないwwww

153 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 21:54:07 ]
>>152
One-Click Ruby Installerのバージョンだね
perlもActivePerlなんだし、そう明記すれば問題ないのに

154 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 23:36:03 ]
>>153
それはないだろwww
186-25なんて1.8.6がリリースされた直後のバージョンでまともに動かなかったはずwww

155 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 23:44:48 ]
>>154
rubyforge.org/frs/?group_id=167
55万ダウンロードで、歴代2位だ
pathlevel 0 と表示される Windows 版 Ruby 1.8.6 を使っている人はまだ多い

156 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 04:08:26 ]
>>155が的確すぎてわろた

157 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 21:49:51 ]
ruby 1.9.1 preview1が出たけどruby-langのニュースにはならないの?
なんでもいいから更新しないと停滞してると思われるよ

158 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 22:09:05 ]
previewやRCは下手に話題にすると変な人が手を出してネガキャンになってしまうので…

159 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 22:21:41 ]
しかしユーザーが増えないとバグが取れて安定しないような

160 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 22:28:36 ]
変な人はバグ報告なんてしません
Firefoxのアルファやベータが一般人に広まっても一般人はバグ報告などしなかった

ある一定以上の経験と知見を持った人間が使ってくれないとバグ報告は増えないというのが悲しい事実



161 名前:159 mailto:sage [2008/11/04(火) 22:32:07 ]
なるほど。失礼した
そういえばFirefoxも普通のソフトになっちゃって、
コミュニティが苦労してるなんて話を聞いたような聞かないような

162 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 02:19:20 ]
1.8系列って1.8.7でディスコン?いつまで{メンテされる|新しいリリースが出る}の?

163 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 09:13:02 ]
>>160
いいかげんな報告が増えるだけでも困るけどな


164 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 20:01:16 ]
「自分の身に起こったことを、簡潔かつ客観的に説明する」
というのは、実のところ選ばれた一部の人間にしかできない行為だからな。

165 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 20:37:12 ]
そのへんは学校で習わないから仕方がないねえ
大学でいいゼミやいい一般教養にぶち当たると訓練になるんだけど

166 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 02:32:11 ]
見知らぬ人間に道を尋ねられて「私の家から北に100mです」って答えるみたいな説明を
本気でする奴がいるからな。

167 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 02:51:25 ]
そんな極端な底辺を例えに出す奴もどうかと思うがな

168 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 08:51:26 ]
>>167
「極端な底辺」ではなく、「まずあり得ないやりとり」としての例ね。
現実に居ることはまったく想定してない。

状況Aにおいて頻繁に見られる性質Bを、Bがまず起きない状況Cに置き換えて
「状況Cでいうなら、つまりこういう光景に等しいよね」と説明することで、
状況Aの中だけで語ってると、頻度が高すぎてそのダメさが大したことじゃないように思えてくる
ニュアンスを消したかった。

169 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 10:35:30 ]
なんだ、いないのか。
ちょっと面白いと思ったのにw

170 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 14:07:45 ]
バグレポートする際に
たとえ話はなんの役にも立たない




171 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 14:08:49 ]
しかしつまらんスレだな

172 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 00:48:33 ]
ActiveRecordってどんな基礎理論から出来てるの?
O/Rっていってもいくつか種類とか制約あってそれぞれ
違うようですが

173 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 02:56:36 ]
>>171
Rubyがつまらないんだからしょうがない。

174 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 04:47:24 ]
Ruby/Pangoって絶賛放置中?

175 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 11:35:05 ]
>>172
マッパーそれ自体に理論ってあったっけ?
RDBとオブジェクト指向のモデルにはズレがあって・・・・・・ってな話は
オブジェクト指向データベースの書籍とかで取り扱われてたような記憶がある

176 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 12:29:00 ]
>>172
基礎理論というほどではないが、ActiveRecordというそのものずばりなpatternもとにしている。
ちなみにDataMapper patternをもとにしたのがDataMapperというライブラリ。
ttp://datamapper.org/

ActiveRecord patternやDataMapper patternについては
capsctrl.que.jp/kdmsnr/wiki/PofEAA/?ActiveRecord
capsctrl.que.jp/kdmsnr/wiki/PofEAA/?DataMapper
をみるのがよかろう。

177 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 19:09:18 ]
やっぱりこれファウラーさんが最初なの?
Railsの影響でPHPでもしばらく前にブームってたが、今ひとつわからんので放置

こればっかりではないが、連想配列のある言語と、Java等のオブジェクトでの
理論・概念の融合が今ひとつ上手く行ってない感じがして仕方がない

178 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 22:23:45 ]
はいはい

179 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 00:56:10 ]
Django使ってる人いますか?

180 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 12:42:18 ]
ふつうGAE使うだろ



181 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 15:53:30 ]
modruby.net/ja/index.rbx/news15.html
mod_rubyの新しいのがリリースされてる
これ何ですか?

182 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 16:00:22 ]
> これ何ですか?
大雑把な疑問だなオイ
書いてあるそのまんまだと思うぞ
自分の環境が該当するものでないのなら無理に導入しなくてもいい

1.9サポートって言っても文法エラー取り除いた程度だと予想

183 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 18:31:41 ]
ついったーの様子だと、
とりあえず1.9で動くようにした程度かな。
twitter.com/shugomaeda


184 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 23:18:23 ]
mod_ruby も、スクリプトごとにRubyインタプリタ起動すれば使う気になるのに。

185 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 00:11:15 ]
>>182
> 1.9サポートって言っても文法エラー取り除いた程度だと予想
もっといろいろ大変だったんだよ
つーか昨夜リリースできたのは驚異的


186 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 00:14:36 ]
>>184
MVMが実装されるまで待て。

187 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 01:22:56 ]
RubyキモいよRuby www


188 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 01:35:22 ]
>>184
mod_rubyの意味ないじゃんじゃん?

189 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 15:01:28 ]
>>184
>mod_ruby も、スクリプトごとにRubyインタプリタ起動すれば使う気になるのに。
それはCGIのことか?

190 名前:184 mailto:sage [2008/11/09(日) 16:16:31 ]
>>189
スクリプトというか、アプリケーションごと?

インタプリタはリクエストごとに起動するわけではなく、
Apacheとともに常駐するんだけど、
全部のスクリプトでそのインタプリタを共有するわけじゃなくて、
スクリプトごとに固有のインタプリタがあると良い。



191 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 16:28:55 ]
グローバルな状態をアプリケーション単位で分けたいということですかね。
>>186が言うようにMVM待ちかなぁ。


192 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 16:42:41 ]
FastCGI等のプロセス常駐じゃだめなの?
よくわからんけど

193 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 18:59:13 ]
FastCGIはたしかにスクリプトごとにパーシステンスプロセスを起動するね。
CGIと違ってリクエストごとには起動しない。
>>184のやりたいことはこれかなあ。

194 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 20:09:18 ]
Ruby 的には mod_ruby と FastCGI とどっちがおすすめなんでしょうか。

mod_ruby って実は mod_php や mod_perl とかと相性悪かったりしない?

195 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 21:07:16 ]
rubyは汎用なんでおすすめApacheモジュールとか言われても困るんじゃないの。
オススメはwebrickかmongrel

196 名前:184 mailto:sage [2008/11/09(日) 22:10:00 ]
うん、だからFCGIやmongrel使うことになって、
mod_ruby を使いたいんだけど使えないなあと。

ほんとは mod_wsgi みたいに mod_rack が欲しい。

197 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 22:49:25 ]
Phusion Passengerってのが別名mod_rack/mod_railsらしいけど詳細は知らない

198 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 00:32:36 ]
アプリがrackやrailsだったらpassengerが希望のものかと。

199 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 14:04:46 ]
>>148
日本語SPAMフィルターでrubyのやつがあったね
そういえば

200 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 14:08:08 ]
rubyのコードを書けるコマンドラインのリネーマーツールってない?
rren -recurse *.txt "$_.upcase!"

aaa.txt
bbb.txt

AAA.TXT
BBB.TXT
になるようなのでもっと至れり尽くせりなやつ。



201 名前:デフォルトの名無しさん [2008/11/13(木) 14:13:02 ]
>>200
> もっと至れり尽くせりなやつ。
単に ruby でワンライナー書くのが一番至れり尽くせり。

202 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 14:20:37 ]
定型処理には、ワンライナーは不便かもしれない。

rename [-g "グロブ記述"] "正規表現"

くらいのインターフェイスでコマンドを書けばいいんじゃね?Rubyで。

203 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 14:55:57 ]
for filename in *.txt; do echo $filename `mv $filename | ruby -n -e 'print $_.upcase'`; done

ファイル名に空白とか入ってておかしなことになっても知らん

204 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 14:56:49 ]
あ、間違えた

for filename in *.txt; do mv $filename `echo $filename | ruby -n -e 'print $_.upcase'`; done

205 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 18:33:16 ]
>>203 は、echo で一回テストしてみる慎重な人。

206 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 18:53:48 ]
mv はよく痛い目に遭うから。

mv <パターン> <ディレクトリ> で、ディレクトリを入力し忘れたら、パターンに
マッチしたファイルが2つで、2つめのファイルが消えちゃったとか。

207 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 21:42:08 ]
echo で試した後、ヒストリ戻って | sh と付けたりする。


208 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 07:04:10 ]
1.9.1-preview1のバグ?
subの第二引数にSJISの文字列を渡すと、2バイト目の\に反応しちゃってる
>ruby19 -Ks -ve "puts 'test'.sub(/test/,'表0')"
ruby 1.9.1 (2008-10-28 revision 19983) [i386-mingw32]
付est

「+暗が gsub できない」のブログエントリを見て
そりゃあJISコードを直接扱うのは無理があるだろっ
でもSJISも2バイト目に\が来たら、-Ksとかでちゃんと$KCODEをSJISにしておかないと引っかかるよなぁ
だがしかし、1.9ならば文字列のエンコードさえしっかりしておけば無問題だぜ!
>ruby19 -Kn -e "puts 'test'.sub(/test/,%!\x95\x5c0!.force_encoding('SJIS'))"
付est

だめじゃんorz


209 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 08:09:14 ]
Rangeに
x < first ? first : x > last ? last : x
なメソッドってないもんかね。あってもよさそうな気がするのだが。

210 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 09:31:27 ]
いい名前がないからじゃないかな
ぴったりな名前ある?



211 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 13:02:14 ]
limit か bound 辺りかな?
(1..10).limit(11) => 10

212 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 13:25:05 ]
俺は以前、こんなメソッド定義してた

(1..10).fold(11) #=> 10
11.fold_in(1..10) #=> 10

213 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 14:27:05 ]
なんか fold っていうと inject を思い出すな

214 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 16:59:52 ]
>>209-213
自分はclampってのを使ってるけど、何故その名前を
使い始めたか思い出せない。合ってるのか?

215 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 20:21:02 ]
>>214
いまいちな感じ

━━ n., vt. 締め金(で締める); (駐車違反車を)車輪止め(wheel 〜)を掛けて動かせなくする.
* clamp down (on) (…を)押えつける; (…を)厳重に取締る.
* clamp・down 取締り.


216 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 20:41:36 ]
以下カードキャプター禁止

217 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 20:49:25 ]
>216
Holicやツバサなら良いのか

218 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 22:48:26 ]
>>208
thx
珍しく田中さんのバグかと思ったらまつもとさんだった。


219 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 00:02:19 ]
Range#clip とか。clipping の clip。

220 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 02:00:14 ]
clipだと、される側が値じゃなくて範囲のように思える。



221 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 02:09:57 ]
imprison は?てかclampよくね

222 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 03:17:36 ]
>>211のboundでいいと思うがなー。
bindの過去分詞じゃなくてboundaryのほうの動詞型だよな?


223 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 21:40:25 ]
以下のようなコードなのですが

ruby -v
#=>ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-mswin32]
<--
$KCODE='s'
t = <<TEXT
\"<src>\"
TEXT
t.sub!('<src>',"C:\\うた\\01.txt")
p t
-->
#=>"\"C:\\うた<src>1.txt\"\n"
となってきちんと置換されません。
"C:\\うた\\01.txt"の部分は起動時の引数を
考えています(運用時に変化する)
どのようにすれば
#=>"\"C:\\うた\\01.txt\"\n"
のように置換できるでしょうか?

224 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 21:46:48 ]
www.ruby-lang.org/ja/man/html/String.html
>注意: gsub の項には sub/gsub を使用する上での注意点が書かれています。

>置換文字列 replace 中の \& と \0 はマッチした部分文字列に、
>\1 ... \9 は n 番目の括弧の内容に置き換えられます。

というわけで。
t.sub!('<src>'){"C:\\うた\\01.txt"}


225 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 22:51:46 ]
文字列をevalすると中を評価してしまう副作用があるけど、
評価しないで文法エラーがあるかどうかだけ知る方法はないだろうか。

1.9ならripperでやれると思うのだが、あいにく1.8。
いま考えているのは ruby -w をforkして標準入力から流し込む。


226 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 22:56:26 ]
eval("if false \n"+ program +"\n end")

で例外が起きなければ多分正しい気がする

227 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 23:00:56 ]
>>226
なるほど3Q


228 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 23:05:43 ]
eval "proc {" + program + "}" とかでもいいのかな。


229 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 23:15:04 ]
おれも eval "proc { #{program} }" 派だ。
begin
 eval "proc { #{program} }"
rescue SyntaxError => ex
 puts ex.message
end

230 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 23:16:52 ]
program='end;exit;begin'
とかやるとexitしちゃうので信頼できないソースにやるのは駄目だな



231 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 01:14:49 ]
>>225
そっちでいくなら ruby -c で終了コードを見た方が。

> ruby -ce 'p 0' || echo error
Syntax OK
> ruby -ce 'p 0.' || echo error
-e:1: syntax error, unexpected $end
error


232 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 03:35:41 ]
お前ら、ちょっとくらいソースのぞいてみろ。
sample/test.rbにそのまんまのがある。

def valid_syntax?(code, fname)
code = code.sub(/\A(?:\s*\#.*$)*(\n)?/n) {
"#$&#{"\n" if $1 && !$2}BEGIN{return true}\n"
}
eval(code, nil, fname, 0)
rescue Exception
puts $!.message
false
end


233 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 11:23:07 ]
がんばってみたけどやっぱりダメみたいだ。

ごめんなみんな。

234 名前:223 mailto:sage [2008/11/18(火) 13:02:24 ]
>>224
レスありがとうございます
思った通りに処理できるようになりました

235 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 03:03:37 ]
国籍法改正案について語ろうぜ

236 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 03:29:00 ]
>>235
mamono.2ch.net/newsplus/

237 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 03:30:35 ]
+(笑)

238 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 21:28:32 ]
Ruby-Gnome2にはお世話になってるので、GUIに関するアンケートに答えたけど、
英語が苦手なのできつかった。。

239 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 23:16:02 ]
what?

240 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 23:30:32 ]
これこれ
blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/45649



241 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 09:47:40 ]
thanks. (あれ?一度レスしたつもりだったが、してなかったか)

242 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 11:09:42 ]
メソッド呼び出しの括弧を省略したらProcオブジェクトが
とれるようにしようぜ
今みたいに関数オブジェクトを名前で指定するって
ダサすぎね?

243 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 11:58:49 ]
それは何を中心に考えるかによるからなあ。プロパティ指向と考えれば今のもあり。

それより、
Rubyって関数とかブロックとかクロージャ類の扱いがなにげに冷遇されてるというか
あんまりきちんと整理されていないというか。
他の言語でクロージャ使って書くつもりのことがRubyだとすんなり書けないね。

表層的には
・ブロックが関数と同等でない(ブロックをとれないなど)
・内部関数(Schemeのinternal defineみたいの)を書けない

Rubyという言語の設計において、クロージャ類は従属的な存在なんだと思う。

244 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 13:03:31 ]
>242
名前っつーか、そのためのシンボルのハズなんだが
ちとシンボルと実体が疎に過ぎる気はするなあ。

>243
Rubyに純粋な意味での「関数」は無いからね。
文の塊をつくる手段は所属するオブジェクトが必要な「メソッド」と
オブジェクトそのものである「ブロック/Proc」の2種類。



PythonやJavaScriptみたいな設計は
「publicな属性が存在する」ことが前提。
「メソッドはpublicな属性に、クロージャが入ったもの」という感じ。
この設計では、関数もメソッドも似たような存在。

ところがRubyはpublicな属性をいきなり排除して
「オブジェクトの属性にはメソッドを通してしかアクセス出来ない」
としてるから、その設計が出来ない。
というのもRubyで「メソッド=クロージャ」…としてしまうと
public属性にアクセスできない=クロージャにもアクセスできなくなるんだよね。

だからRubyがpublic属性を否定する限り
メソッドは特別な存在でなければならず、クロージャではありえない。
…お陰で、相対的にクロージャの地位が下がっちゃってる。

245 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 13:07:21 ]
ただ、もう少しProcとメソッド双方歩みよって
「違うけど、似たように扱える」仕組みがあっても良いとは思う。

246 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 20:25:17 ]
メソッド呼び出しの括弧の省略を許す限りなかなか難しいだろうなあ

247 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 23:20:48 ]
フリーの統合開発環境「NetBeans 6.5」正式版リリース

248 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 02:07:28 ]
メソッドをProcにするのなんか、
x = proc {obj.foo}
でいいんじゃね?

249 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 04:22:24 ]
1.9だと ブロック引数にデフォルト値の指定ができるし、ブロックも渡せる
block=lambda{|a,b=2,&c| p [a,b,c.yield]}
block.call(1){'block'} #=> [1,2,'block']

もう、いっそのこと {|| 〜} って書いたら、それはProcとして扱ったらいいんじゃね?


250 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 04:41:37 ]
あと、素人の浅知恵&妄想だが
selfを省略した括弧付きのメソッド呼び出しに限定して
メソッドが存在しない時に、同名の変数があって
それがProcオブジェクトなら call する
同名変数が存在しないか、変数がProcオブジェクトでなければ method_missing

今だって
def a;'def a';end
a = 'var a'
なんてしたときは 字面の a だけをみても変数なのかメソッドなのかわからんのだし
p a, a()
で、呼び分けるんだから a()がメソッド呼び出しなのか
変数aのProcオブジェクトをcallしてるのか判らなくてもいいんじゃね
a = lambda{'proc a'}
p [a, a(), a.call] # => [#<Proc:〜 (lambda)>, "def a", "proc a"]
で呼び分けれるし




251 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 04:49:18 ]
で、
alias func lambda
などとすれば
x = func{p 'function'}
x()

あらまぁ、もはや関数と見分けがつかない
なんちゃって


252 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 05:54:47 ]
>selfを省略した括弧付きのメソッド呼び出しに限定して
selfじゃなくてレシーバの省略だった

おまけで
__proc__みたいな感じでProc自身が取れたりすると
Procの再帰がさせやすくなったり







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

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

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