【Rubyメモ】compactについて理解する!こつこつ学んでいこう!

IT/プログラミング

今日はRubyのcompactについて勉強しました!

では早速調べていきましょう!

compactの英語の意味を調べる

まずは英語の意味を調べてみました!

compact:ぎっしり詰まった、圧縮する。小型車

こんな意味があるそうです。

つまり、なんか詰めたり、圧縮したりできるメソッドっぽいですね!

実際に使ってみた

compactは配列で利用できるメソッドです。

array1 = [1,2,3,4,5]
include_nil_array = [nil, nil,1,2,nil,3,nil,4]
p array1.compact
p array1
p include_nil_array.compact
p include_nil_array
p include_nil_array.compact!
p include_nil_array


実行結果
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
[1, 2, 3, 4]
[nil, nil, 1, 2, nil, 3, nil, 4]
[1, 2, 3, 4]
[1, 2, 3, 4]

nilのない配列に対して実行しても
変化はありませんでした。

nilの存在する配列に対して実行すると、
nilを削除した状態で配列が返ってきました。

さらに削除した配列の中身を見てみると、
また配列はもとの状態のままのため、
非破壊メソッドということがわかりました!

「!」を加えてcompact!を
利用すると破壊できました!

配列以外で使ってみたらどうなるか試してみた

string = "1,nil"
p string.compact

実行結果
undefined method `compact' for "1,nil":String (NoMethodError)

「Stringにそんなメソッドはないんやで!」

no_magic_number = 1
p no_magic_number.compact

実行結果
undefined method `compact' for 1:Integer (NoMethodError)

「Integerにそんなメソッドはないんやで!」

・・・はい、配列にしか使えません!

まとめ

  • compactは詰めるという意味。
  • 配列で使うメソッド。それ以外はエラー。
  • nilを取り除いた配列を返してくれる。
  • 非破壊メソッド。「!」を使うと破壊できる。
  • nilのない配列に使っても値は変わらない。エラーも発生しない。

RubySilverに挑戦した

Ruby Silverに挑戦したお話はこちらからどうぞ

タイトルとURLをコピーしました