Skip to content

Commit 64e2a90

Browse files
znzclaude
andcommitted
NEWS 3.2.0: ruby2_keywords 段落を再訳・折り返し
再レビュー(上流 v3_2_0 NEWS との突合)で判明した ruby2_keywords 段落の誤訳を、原文に沿って訳し直した: - "with no exception"(例外なく)を「例外を起こさずに」と誤訳していた - "transition to other ways of delegation"(他の委譲方法への移行)が欠落 - 不足している ruby2_keywords を見つける手順の説明が原文と乖離し、 原文に無い「全てに対して puts ... を追加していました」が混入していた 併せて、長くなった行を doctree の作法どおり 4 スペース字下げで折り返した。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 53d86fd commit 64e2a90

1 file changed

Lines changed: 12 additions & 1 deletion

File tree

refm/doc/news/3_2_0.rd

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,18 @@ foo1::BAR1, foo2::BAR2 = baz1, baz2
5454

5555
* Find patternが実験的な機能ではなくなりました。 [[feature:18585]]
5656

57-
* 可変長パラメータ (*args など) を受け取るメソッドで、 foo(*args) を通してキーワード引数を委譲したい場合は、 ruby2_keywords でマークしなければならなくなりました。言い換えれば、*args などを用いてキーワード引数を例外を起こさずに委譲したい全てのメソッドは ruby2_keywords によってマークする必要があると言うことです。これによって Ruby 3 以降のバージョンへ委譲を用いている処理を有するライブラリを簡単に対応できるようになります。以前はメソッドが *args を受け取る場合、ruby2_keywords フラグが保持されていました。しかし、これには一貫性がないと言う不具合がありました。今まではキーワード引数を複数のメソッドにまたがって委譲する時に、 ruby2_keywords を正しく使っているかを確認するために、全てに対して puts nil, caller, nil を追加していましたが、この変更によりテストを実行するときに ruby2_keywords が必要であるにもかかわらず使われていないものを見つける良い手段となります。 [[bug:18625]] [[bug:16466]]
57+
* 可変長パラメータ (*args など) を受け取るメソッドで、 foo(*args) を通して
58+
キーワード引数を委譲したい場合は、 ruby2_keywords でマークしなければ
59+
ならなくなりました。言い換えれば、*args を用いてキーワード引数を委譲したい
60+
全てのメソッドは、例外なく ruby2_keywords でマークする必要があるということです。
61+
これにより、ライブラリが Ruby 3 以降を要求できるようになった際に、
62+
他の委譲方法へ移行することが容易になります。以前は、受け取り側のメソッドが *args
63+
取る場合に ruby2_keywords フラグが保持されていましたが、これは一貫性を欠く
64+
バグでした。不足している可能性のある ruby2_keywords を見つけるには、
65+
テストスイートを実行し、失敗した箇所でキーワード引数を受け取るべき
66+
最後のメソッドを特定して、そこに puts nil, caller, nil を置き、
67+
呼び出し連鎖上でキーワードを委譲すべき各メソッド/ブロックが正しく
68+
ruby2_keywords でマークされているかを確認する、という方法が有効です。 [[bug:18625]] [[bug:16466]]
5869

5970
#@samplecode
6071
def target(**kw)

0 commit comments

Comments
 (0)