2021年2月28日の記事でございます~
Rubyのuniqについて理解を深める会をはじめます!
uniqueの英語の意味を調べた
uniqは、「unique」を省略したものだと思います。
そのため、uniqueを調べました。
unique:ただ一つだけ、他は存在しない、固有の、数学的:一意
という意味らしいです。Rubyは「数学的:一意」で使っていそうですね!
つまり、uniqを使うと一意になるっぽいです!
実際つかっていきましょう!
uniqを使ってみた
int_array = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 11]
p int_array.uniq
p int_array
p int_array.uniq!
p int_array
word_array=["あ", "り", "が","と","う","あ","り"]
p word_array.uniq
p word_array
p word_array.uniq!
p word_array
実行結果
[1, 2, 3, 4, 5, 11]
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 11]
[1, 2, 3, 4, 5, 11]
[1, 2, 3, 4, 5, 11]
["あ", "り", "が", "と", "う"]
["あ", "り", "が", "と", "う", "あ", "り"]
["あ", "り", "が", "と", "う"]
["あ", "り", "が", "と", "う"]
なるほどなるほど!
配列の複数の要素で同じ値があった場合は、一意にして
配列を返すメソッドのようです!
そして、非破壊メソッドです。
いつも通り「!」をつけると破壊メソッドとなりますね。
ブロックで書いてみた
thank_array = [3, 9, 3, 9, "3", "9", "3", "9"]
p thank_array.uniq
p thank_array.uniq{|value|value.to_s}
実行結果
[3, 9, "3", "9"]
[3, 9]
同じ値は同じ値でも、
型をちゃんと見て一意に
していることがわかりました!
ブロックを用いて1文字ずつ型をString型にしても、
返してくれるものは、配列で、
中身はintの値となりました。
エラーケース
thank_array = [3, 9, 3, 9, "3", "9", "3", "9"]
p thank_array.uniq(3)
実行結果
`uniq': wrong number of arguments (given 1, expected 0) (ArgumentError)
まぁそうなりますよね~笑
uniqは引数のないメソッドでした~
まとめ
- 同じ型の同じ値を一意にするメソッド
- 非破壊的で、「!」を付けると破壊的!
- 引数は必要ないメソッド!
以上でした!
RubySilverに挑戦した
Ruby Silverに挑戦したお話はこちらからどうぞ。