map

Heroku の log コマンドのソースを読んでいたらちょっとした発見があったのでメモ。

log.rb

def parse_log(log)
  return unless parsed = log.match(/^(.*\[(\w+)([\d\.]+)?\]:)(.*)?$/)
  [1, 2, 4].map { |i| parsed[i] }
end

map を使っているところなんだけど、自分だったら

  return parsed[1], parsed[2], parsed[4]

と書いている、たぶん。
そんな書き方もできるんだと感心。メリットはどんなところだろう。

  • return a, b, c よりもカッコいい
  • タイプ数が少ない
  • 返す要素の数が変更になる、順番が変わるときの変更が楽(変更になることがそう頻繁にあるとは思わないけど)

こんなところ?
逆にデメリットは

  • 初心者には分りづらい

とか?

ところで、こういう書き方は一般的なのだろうか?