内容は適当です。
今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。
あくまでも『わたしが気になったチケット』で全ての bugs.ruby のチケットを載せているわけではありません。
[Bug #17424] Interactive Ruby で Object#method を再定義して任意の文字を入力するとエラーが発生する
- 表題の通りでなんですが
irb上で#methodを再定義するとクラッシュするというバグ報告です - これは
irb上で#methodを定義するとKernel#methodよりも優先順位が高いObject#methodが定義されてしまい、Reline でそのObject#methodを使用しているためです - これは仕様でチケットは閉じられています
- まあしょうがなさそう
[Feature #7394] Enumerable#find ifnone parameter could be non-callable
Enumerable#findは要素が見つからなかった場合の処理をフォールバックすることができる
# 見つからなかった場合に第一引数の proc を呼び出す p [1, 3, 5].find(-> { "none" }, &:even?) # => "noge"
- 現状は
Procオブジェクトを渡すがこれをそれ以外のオブジェクトを渡せるようにする提案
# 第一引数の値がそのまま返ってくる p [1, 3, 5].find("none", &:even?) # => "noge"
- コメントでは以下のような既存の書き方と比較して何がよいのか指摘されている
p [1, 3, 5].find(&:even?) || "none"
[Feature #17608] Compact and sum in one step
- 次のように
Array#sumを行う場合に#compactを介して行うことがある
a = [1, nil, 2, 3] a.sum # !> TypeError a.compact.sum # => 6 a.sum{_1 || 0} # => 6
- これをワンステップで行うために
#sumではnilの要素をスキップする、またはArray#filter_sumのようなメソッドを追加する提案です - 最終的には
a.sum{_1 || 0}で問題ないということで Reject されています