🦁
[Feature #21615] 自身と同じ配列を返す `Array#values` を追加する提案
[Feature #21615] Introduce Array#values
- 自身と同じ配列を返す
Array#valuesを追加する提案 - モチベーションとしては
HashとArrayを区別せずにダックタイピングで#valuesを呼び出せるようにしたいみたいですね - 以下のように
#reponse_to?で処理を切り分けるのを
def normalize_records(input)
items = input.respond_to?(:values) ? input.values : input
items.each do |item|
do_stuff_with_item(item)
end
end
- 以下のように
#valuesで呼び出せるようにしたいみたい
def normalize_records(input)
input.values.each do |item|
do_stuff_with_item(item)
end
end
- ちょっと違うんですが
#values_atはHashでもArrayでも定義されているのでそれと合わせたい、みたなのもモチベーションとして書いてある- それぞれ添字アクセスしたときと同じ値を返すようなメソッド
hash = { a: 1, b: 2, c: 3 }
pp hash.values_at(:a, :c) # => [1, 3]
ary = %w(homu mami mado)
pp ary.values_at(0, 2) # => ["homu", "mado"]
- これ系はどこまでダックタイピングとして使いたいのかが難しそうですね
- コメントにも
Set#valuesも追加する話とかがでています -
Enumerable#valuesを追加しちゃったほうがいろいろと手っ取り早い気もするけどそこまでは話し広げ過ぎな気もするしなあ
Discussion