[#44586] [Ruby 1.9 - Bug #5423][Open] readlineの入力待機中に端末のウィンドウサイズ変更すると入力内容が乱れる — Takuto Matsuu <matsuu@...>

8 messages 2011/10/08

[#44589] [Ruby 1.9 - Bug #5429][Open] 64ビットなFreeBSDのioctlでビット31が1なリクエストの時の不具合 — Makoto Kishimoto <redmine@...>

21 messages 2011/10/09

[#44604] Ruby 2.0 release plan — "NARUSE, Yui" <naruse@...>

ささださんが既にいくつか 2.0 関連のメールを投げていらっしゃいますが、

75 messages 2011/10/18
[#44612] Re: Ruby 2.0 release plan — Yusuke Endoh <mame@...> 2011/10/18

遠藤です。

[#44607] Re: Ruby 2.0 release plan — Yukihiro Matsumoto <matz@...> 2011/10/18

まつもと ゆきひろです

[#44618] Re: Ruby 2.0 release plan — "NARUSE, Yui" <naruse@...> 2011/10/18

(2011/10/18 16:15), Yukihiro Matsumoto wrote:

[#44619] Re: Ruby 2.0 release plan — Yukihiro Matsumoto <matz@...> 2011/10/18

まつもと ゆきひろです

[#44627] Re: Ruby 2.0 release plan — Urabe Shyouhei <shyouhei@...> 2011/10/19

On 10/18/2011 10:16 PM, Yukihiro Matsumoto wrote:

[#44629] Re: Ruby 2.0 release plan — Yukihiro Matsumoto <matz@...> 2011/10/19

まつもと ゆきひろです

[#44631] Re: Ruby 2.0 release plan — Urabe Shyouhei <shyouhei@...> 2011/10/19

たとえば2.0の次のバージョン番号はどうしますか?

[#44633] Re: Ruby 2.0 release plan — "NARUSE, Yui" <naruse@...> 2011/10/20

2011年10月20日3:31 Urabe Shyouhei <shyouhei@ruby-lang.org>:

[#44707] [ruby-trunk - Feature #5512][Open] Integer#/ の改訂 — tadayoshi funaba <redmine@...>

13 messages 2011/10/30

[#44719] [ruby-trunk - Feature #5520][Open] Numeric#exact?、Numeric#inexact? の追加 — tadayoshi funaba <redmine@...>

13 messages 2011/10/31

[ruby-dev:44602] keyword arguments

From: Yusuke Endoh <mame@...>
Date: 2011-10-17 16:36:58 UTC
List: ruby-dev #44602
遠藤です。

# redmine の 2.0 tracker にチケットを登録したのですが、メールが
# 流れないようです。パッチはチケットを見てください。
# http://redmine.ruby-lang.org/issues/5454


キーワード引数を実装してみました。

 $ cat t.rb
 def foo(str: "foo", num: 424242)
   p [str, num]
 end
 foo(str: "bar")

 $ ./ruby t.rb
 ["bar", 424242]

細かいことはまだ気にしていませんが、キーワード引数が 2.0 に入る
ことはかなり確定的なので、とりあえず trunk に入れて考えるという
のはどうでしょうか。

一応私の環境では make check は通ります (キーワード引数のテスト
は書いてないですが) 。パーサに conflict はないです。
既存のベンチマークを見ると、一部気になる項目もありますが (vm1_
rescue とか) 、全体的には特に速度劣化しないようです。


以下は未実装・懸案です。

 - 残りのキーワード引数を受け取る方法が必要か

   def foo(str: "foo", num: 424242, **h)
     p h
   end
   foo(str: "bar", check: true)  #=> { :check => true }

 - nil が渡されたらやはり nil になるべき?

   def foo(str: "foo")
     p str
   end
   foo(str: nil) #=> nil ? (今は手抜きで "foo")

 - rest なしで知らないキーワードが来たら例外・警告を発して
   欲しい?

   def foo(str: "foo", num: 424242)
   end
   foo(check: true) #=> ArgumentError?

 - Hash のように振る舞うオブジェクトもキーワード引数として
   解釈すべき? (現在は速度重視で T_HASH だけ見ている)

 - 引数の順番はよいか

   def foo(
     a, b, c,     # mandatory arguments
     opt = 1,     # optional arguments
     *rest,       # rest argument
     x, y, z,     # post mandatory arguments
     k1: 1, k2:2, # keyword arguments
     **kh,        # keyword rest argument
     &blk         # block argument
   )

 - 他いろいろ

--
Yusuke Endoh <mame@tsg.ne.jp>

In This Thread

Prev Next