見出し画像

[ruby]Arrayクラスのcollect, delete_if

require "time"

# いまさら気づいたrubyのワンダフルなArrayクラス。
# Timeクラスの配列→文字列連結する

pp [Time.parse("2022-03-07 08:00"),
Time.parse("2022-03-07 13:23"),
Time.parse("2022-03-07 14:11"),
Time.parse("2022-03-07 17:55")].collect {|i| i.strftime("%H:%M")}.join(" ")

# => "08:00 13:23 14:11 17:55"

# 配列がTimeクラス以外のオブジェクトが混入した場合の異常系な処理もワンライナーでいける
pp [Time.parse("2022-03-07 08:00"),
Time.parse("2022-03-07 13:23"),
"2022-03-07 14:11",
Time.parse("2022-03-07 17:55")].collect { |i| i.strftime("%H:%M") if i.class==Time }.delete_if{|i| i.nil?}.join(" ")

# => "08:00 13:23 17:55"

この記事が気に入ったらサポートをしてみませんか?