compact メソッド
Ruby | Flatten Array | Exercismにて。
問
入れ子になったリストのような構造体を受け取り、nil/null 値を含まない平坦化された構造体を返す関数を作る
例
1,[2,3,null,4],[null],5]
入力すると
[1,2,3,4,5]
と出力される
↓自分で考えたもの
class FlattenArray def self.flatten(array) flatten_array = array.flatten # 平坦化する flatten_array.delete(nil) # nil を消す。flatten_arrayにはnilが抜かれた状態だが、この返り値はnilになる。 flatten_array # nilがない状態の配列 end end
↓一番多くスターを獲得しているSiarhei Kavaliouさんの回答
class FlattenArray class << self def flatten(arr) arr.flatten.compact end end end
serg-kovalev's solution to Flatten Array on the Ruby track | Exercismより引用
compact
というインスタンスメソッド自身から nil を取り除いた配列を生成して返すので、上記の課題を全て解決できる。
参考