ハッシュで値を管理することで合計値や最大値をわかりやすく取得する

前提:

data配列に、キーblocksにて格納していた値を取り出して、

Array#sum 渡すことで合計値のtotalを算出している。

 

block_total = a_data.sum { |data| data[:blocks] }
total = "total #{block_total}"

 

またハッシュへの格納方法については下記の様にもできる。

 

def build_data(file_path, stat)
{
nlink: stat.nlink.to_s,
blocks: stat.blocks
  }

 

メソッドの返り値にそのままキーの設定もできる。

 

実践編:

これを応用して、

 

def render_long_format_body(file_data)
max_sizes = %i[user group size].map do |key|
find_max_size(file_data, key)
end

def find_max_size(row_data, key)
file_data.map { |data| data[key].size }.max
end

 

1.

def render_long_format_body(file_data)

引数でファイルデータ受取

 

2. 

max_sizes = %i[user group size].map do |key|

%i[ ] でシンボルの配列作成

Rubyで%記法(パーセント記法)を使う - Qiita

keyを回す。 user →size

 

3. 

find_max_size(file_data, key)
end

find_max_size を 2のkeyでfile_dataを与えて実行

※メソッド名ではsizeだが、キー値の user group なども実行できる。

ここは引数の型指定が厳密でないRuby特有の書き方かもしれない。

 

4.

def find_max_size(file_data, key)
file_data.map { |data| data[key].size }.max
end

あとはデータ内のmaxを検索して、mapなので配列を新規に出力して、

max_sizes

に代入される。

 

さいごに

この記事中のコーディングのやり方は、

Ruby界隈で超有名な伊藤さんによる書き方を参考にしています。

初心者からすると、一流の方のコーディング術を学べて、さらに動画でその風景を見ることができます。

この点めちゃくちゃすごくないですか???

ぜひ初心者も中級者もFiyorudoBootCampを試してみてください。