[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"
この記事が気に入ったらサポートをしてみませんか?