コンパイラかく語りき

import { Fun } from 'programming'

【Ruby】injectの初期値に配列を設定

そういえば、injectの初期値って、別に数値に限らないんじゃない?

そんな風にふと思い立って、やってみました。

 

inject (Enumerable) - Rubyリファレンス

 

injectのリファレンスを見ると、だいたい初期値のサンプルコードはこんな感じです。

[1, 1, 1].inject(10) {| sum, x | sum + x}

 

数値がセットされてるんですよね。

 

そこで、配列をセットしてみました。

gist026445664f9e7946831df97b69b00e35

できました。

[1, 1, 1]という配列に対して、inject。初期値の[1, 2, 3]に対して、[1, 1, 1]の各要素を追加しました。

 

このコードだけみると、Array#concatすればいいじゃん!という感じですね。。笑

ただ、injectのループでたった今生成した配列を参考にして、次の処理を決める。。。なんて場合には良さそうです。

 

たとえば、トリボナッチ数列。

この数列は、1個前, 2個前, 3個前の数の和から為ります。なので、配列を生成しながら次の要素を算出する必要がありますね。

そういうときに、配列初期化injectだったらスマートに書けそうです。

 

トリボナッチ数列を求めるプログラムがこちら。

gist13f6e4a1e812b2f15ec79cf49fadb210

入力された値の個数を持つトリボナッチ数列を生成します。