[#37959] [Bug:trunk] I can modify literals — Yusuke ENDOH <mame@...>

遠藤です。

13 messages 2009/02/10

[#38005] Is URI.decode() broken? — MOROHASHI Kyosuke <moronatural@...>

もろはしです。いつもお世話になっております。

39 messages 2009/02/14
[#38006] Re: Is URI.decode() broken? — Nobuyoshi Nakada <nobu@...> 2009/02/14

なかだです。

[#38009] Re: Is URI.decode() broken? — "NARUSE, Yui" <naruse@...> 2009/02/14

成瀬です、

[#38016] Re: Is URI.decode() broken? — Fujioka <fuj@...> 2009/02/15

xibbarこと藤岡です。

[#38017] Re: Is URI.decode() broken? — "NARUSE, Yui" <naruse@...> 2009/02/15

成瀬です。

[#38040] Re: Is URI.decode() broken? — akira yamada / やまだあきら <akira@...> 2009/02/17

NARUSE, Yui さんは書きました:

[#38124] Re: Is URI.decode() broken? — "NARUSE, Yui" <naruse@...> 2009/03/03

成瀬です。

[#39214] Re: Is URI.decode() broken? — akira yamada / やまだあきら <akira@...> 2009/09/02

(2009年03月03日 22:45), NARUSE, Yui さんは書きました:

[#39218] Re: Is URI.decode() broken? — "NARUSE, Yui" <naruse@...> 2009/09/02

成瀬です。

[#39236] Re: Is URI.decode() broken? — Tanaka Akira <akr@...> 2009/09/05

In article <4A9E44DD.6050706@airemix.jp>,

[#39242] Re: Is URI.decode() broken? — KOSAKI Motohiro <kosaki.motohiro@...> 2009/09/07

小崎@思いつきを適当に書いてみるテスト

[#39246] Re: Is URI.decode() broken? — Tanaka Akira <akr@...> 2009/09/07

In article <20090907091830.2C7A.A69D9226@jp.fujitsu.com>,

[#38096] 多重代入やメソッド引数の展開でto_aが呼ばれます — nagachika <nagachika00@...>

nagachika と申します。

10 messages 2009/02/26

[#38098] ブロック引数と括弧・引数なしsuper — Shugo Maeda <shugo@...>

前田です。

12 messages 2009/02/27

[ruby-dev:38056] Re: Add option hash support to rb_scan_args()

From: "Akinori MUSHA" <knu@...>
Date: 2009-02-20 05:27:29 UTC
List: ruby-dev #38056
At Fri, 20 Feb 2009 00:10:11 +0900,
matz wrote:
> In message "Re: [ruby-dev:38048] Add option hash support to rb_scan_args()"
>     on Thu, 19 Feb 2009 04:33:12 +0900, "Akinori MUSHA" <knu@iDaemons.org> writes:
>
> | rb_scan_args() にoption hash対応を組み込むのはどうでしょうか。
> |実装してみたのでパッチを添付しました。
> |
> |    argc = rb_scan_args(argc, argv, ":12", &opt, &path, &mode, &perm);
> |
> |のように頭に : と書くと、必須引数より多くの引数が与えられ、その
> |最後の引数がHash(ないし #to_hash で変換可能)な場合に取得されます。
>
> [ruby-dev:35379]で中田さんがキーワード対応のパッチをポストし
> てくださっています。ハッシュを取り出すのではなく、キーワード
> を直接指定するのがキーワード引数らしいかもしれません。

 見てみました。仕様案としては十分あると思いますが、その実装では
たぶんうまく行きません。必須引数のチェックを行う前に最後の引数が
ハッシュなら無条件に取ってしまっているので、オプションハッシュの
つもりではなく渡したハッシュがそう受け取られて除去されてしまい、
引数が足りないとエラーにされてしまうケースが出ると思います。

 それは私も実際に既存のオプションハッシュを取るメソッドに適用
してみて気づいたことで、私のパッチではまず初めにpostargを含めた
必須引数の数を計算してから、オプションハッシュと考えてよいかを
判断するようにしています。

 また、取得したオプションハッシュを(Hash の形で)下請け関数に
投げる例も多く、各キーワードに対応した値の取り出しまでできても、
現状の実装に適用するには改修範囲が大きくなってしまいます。

 ということで実際に使うような改修も含めて実装し、テストを行った
ものとして検討していただけるとうれしいです。

> 確かになんらかの方法でrb_scan_argsによるキーワード引数の支援
> は欲しいですよねえ。

 先のメールでも少し出ましたが、将来的にはメソッド定義の段階
(rb_define_method)でシグネチャを指定するようにすべきでしょうね。
そうすれば、現在各メソッド内で行っている基本的な引数チェックの
手間が省けるほか、その際のエラーメッセージや Method#parameters
などのリフレクションAPIの返り値をCで定義したメソッドについても
Rubyで定義したメソッドと等しくinformativeかつhuman readableな
ものにできます。

 rb_scan_args はいずれ消えゆくものと考えて、現状の実装が少し
楽になる程度の改修に留めるのが落としどころではないでしょうか。
キーワード引数の本格的なサポートは、新しい文法や枠組み(API)と
ともに導入されるべきだと思います。

--
Akinori MUSHA / http://akinori.org/

In This Thread