[#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
[#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>:

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

遠藤です。

[#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:44603] Re: keyword arguments

From: Yukihiro Matsumoto <matz@...>
Date: 2011-10-17 22:56:23 UTC
List: ruby-dev #44603
まつもと ゆきひろです

In message "Re: [ruby-dev:44602] keyword arguments"
    on Tue, 18 Oct 2011 01:36:58 +0900, Yusuke Endoh <mame@tsg.ne.jp> writes:

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

ありがとうございます。

| $ cat t.rb
| def foo(str: "foo", num: 424242)
|   p [str, num]
| end
| foo(str: "bar")
|
| $ ./ruby t.rb
| ["bar", 424242]
|
|細かいことはまだ気にしていませんが、キーワード引数が 2.0 に入る
|ことはかなり確定的なので、とりあえず trunk に入れて考えるという
|のはどうでしょうか。

賛成です。trunkに入れちゃっていいのかな。そういう機能の入っ
ていない1.9ブランチが欲しい人は急いで切ったほうがいいと思い
ますよ。

|以下は未実装・懸案です。
|
| - 残りのキーワード引数を受け取る方法が必要か
|
|   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")

nilになるべきでしょう。

| - rest なしで知らないキーワードが来たら例外・警告を発して
|   欲しい?
|
|   def foo(str: "foo", num: 424242)
|   end
|   foo(check: true) #=> ArgumentError?

ここは議論の余地があるところですね。現時点では、**で受け取ら
ない限り例外にするべきだと考えていますが、実際にいろいろな局
面で使ってみると意見が変わるかもしれません。

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

とりあえずto_hashを使ってください。新設のto_kwのようなメソッ
ドを使うべきなのかもしれませんが。

| - 引数の順番はよいか
|
|   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
|   )

これで良いと思います。

                                まつもと ゆきひろ /:|)

In This Thread

Prev Next