< :前の番号
^ :番号順リスト
> :次の番号
P :前の記事(スレッド移動)
N :次の記事(スレッド移動)
|<:前のスレッド
>|:次のスレッド
^ :返事先
_:自分への返事
>:同じ返事先を持つ記事(前)
<:同じ返事先を持つ記事(後)
---:分割してスレッド表示、再表示
| :分割して(縦)スレッド表示、再表示
~ :スレッドのフレーム消去
.:インデックス
..:インデックスのインデックス
Issue #5662 has been reported by Edvard Majakari.
----------------------------------------
Feature #5662: inject-accumulate, or Haskell's mapAccum*
http://redmine.ruby-lang.org/issues/5662
Author: Edvard Majakari
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
with Ruby, we often use this idiom to build a hash out of something:
new_hash = enum.inject({}) { |h, thing| h[compute_key(thing) = compute_value(thing)]; h }
while that last h is very easy to add, it is also easy to forget and feels logically not very injectish thing to do. I'd propose this we call 'infuse' in our project:
module Enumerable
# like inject, but returns accumulator instead. Instead of writing
# [1, 2].inject({}) {|h, i| h[i] = 2*i; h }
# just say
# [1, 2].infuse({}) {|h, i| h[i] = 2*i } # -> {1 => 2, 2 => 4}
def infuse(init, &block)
inject(init) { |acc, i| block.call(acc, i); acc }
end
end
Eg. [1, 2].infuse({}) { |a, i| a[i] = 2*i } # => {1 => 2, 2 => 4}
Instead of infuse, maybe inject_accum or inject_acc would be more rubyish method name.
--
http://redmine.ruby-lang.org