[#41531] [Bug #3385] ext/dbm: accept various version of db — Takahiro Kambe <redmine@...>

Bug #3385: ext/dbm: accept various version of db

10 messages 2010/06/03

[#41600] 質問・提案:cgi.rbの後継となるライブラリについて — Dice <tetradice@...>

Diceです。cgi.rbの後継ライブラリについて質問させてください。

16 messages 2010/06/13
[#41606] Re: 質問・提案:cgi.rbの後継となるライブラリについて — Fujioka <fuj@...> 2010/06/14

藤岡です。

[#41607] Re: 質問・提案:cgi.rbの後継となるライブラリについて — KAKUTANI Shintaro <shintaro.kakutani@...> 2010/06/14

かくたにです。

[#41616] Re: 質問・提案:cgi.rbの後継となるライブラリについて — Dice <tetradice@...> 2010/06/15

藤岡さん、かくたにさん、返信ありがとうございます。

[#41617] Re: 質問・提案:cgi.rbの後継となるライブラリについて — Fujioka <fuj@...> 2010/06/16

藤岡です。

[#41656] Re: 質問・提案:cgi.rbの後継となるライブラリについて — Dice <tetradice@...> 2010/06/20

Diceです。藤岡さん、返信ありがとうございます。

[#41623] [Feature:trunk] argument delegation — Nobuyoshi Nakada <nobu@...>

なかだです。

23 messages 2010/06/16
[#41625] Re: [Feature:trunk] argument delegation — Yusuke ENDOH <mame@...> 2010/06/16

遠藤です。

[#41627] Re: [Feature:trunk] argument delegation — Yukihiro Matsumoto <matz@...> 2010/06/16

まつもと ゆきひろです

[#41702] WIN32OLE_METHOD offset_vtbl — kuwamoto shintaro <beuniv@...>

こんばんわ

16 messages 2010/06/23
[#41712] Re: WIN32OLE_METHOD offset_vtbl — Masaki Suketa <masaki.suketa@...> 2010/06/24

助田です。

[ruby-dev:41641] Re: [Feature:trunk] argument delegation

From: Shugo Maeda <shugo@...>
Date: 2010-06-17 08:05:10 UTC
List: ruby-dev #41641
前田です。

2010年6月17日14:53 Yukihiro Matsumoto <matz@ruby-lang.org>:
> |argument delegationについてはまだ態度を決めかねているのですが、
> |super(...)が導入されたら、(警告を出すなどの移行ステップを経て)
> |括弧なしsuperはsuper()と同じ意味にしてしまってはどうでしょうか。
>
> うーん、superがsuper()の意味であってうれしいのは、
>
>  * ルールが少なくなる
>  * 無引数superの呼び出しが十分に多い
>
> のいずれかだと思うのですが、前者は結局はRubyの設計では優先度
> が低い「一貫性」を高めるということなので、この際「うれしい」
> とは評価しません。

強いていえば前者ですが、ルールが少なくなることそのものがうれしい
のではなくて、通常のメソッド呼出しだと()を付けなくてもよいのに、
superのときだけ引数がないのに()を付けないといけないのが(見た目
的に)気持ち悪い、という理由です。

> 後者ですが、これが実際的にうれしいのは
>
>  * superを含むメソッドが引数を1個以上受け取り
>  * superにはひとつも渡さない
>
> というケースだけで、

私の経験では、initializeをオーバーライドするときにsuper()と書かないと
いけなくて気持ち悪いと感じることが結構ありました。
ちなみに標準添付ライブラリにおけるsuper/super()の利用箇所を調べたところ

  super: 391箇所
  super(): 292箇所

という結果でした。意外といい勝負じゃないでしょうか。

> superの使い道のうち多くを含む(と思われる)
>
>  * superを含むメソッドが引数を1個以上受け取り
>  * superにそのまま渡す
>
> 場合、これまでsuperだけですんだものをsuper(...)と書かねばなら
> ず、ちっともうれしくありません。

5文字の節約が重要になるほどよく使う機能でもないと思うので、
短い記述で済むことよりも、他の機能との類推でsuperの挙動を
推測できることの方が利点が大きいように思います。

ただ、互換性の問題もある(既存のスクリプトは機械的に置換できる
んじゃないかと思いますが)ので、それほど強くは主張しません。

> |superではブロック引数への代入が反映されない動作になっていますが、
> |argument delegationではどうなりますか?
> |
> |  def foo(&b)
> |    b = lambda { puts "lambda in foo" }
> |    bar(...)
> |  end
> |
> |というケースの話ですが。
>
> 「superと同じ動作」というのが基本だと思います。本当は、通常
> 引数も代入が反映されないようにしたいのですが、YARVの実装だと
> 難しいと聞いたような気がします。

性能上の理由ということで了解しました。
# 個人的には、引数に代入するのは悪いスタイルだと思ってるので、どっちでも
# いいんですけど。

-- 
Shugo Maeda

In This Thread