Rubyのビット演算子でarrayを操作する

こんにちは、hachi8833です。今回はRubyの小ネタです。 Qiitaで「RubyでArrayどうしを加算して一意にするのをuniqメソッド使わずにやる」という記事を見かけておっと思ったので、もう少し調べてみました。 [1] pry(main)> [1,2,3,1]|[2,3,88,4,4,6,7,23,41] #=> [1, 2, 3, 88, 4, 6, 7, 23, 41] 縦棒演算子|を使用することで、確かに2つのarray全体の重複が解消されました。arrayの内容の順序は保存されるので、.sortで改めてソートをかけることもできます。 この縦棒は何だろうと思ったら、基本的にrubyのビット論理和演算子として使われているものでした。 Rubyで使われる記号の意味 論理和演算子または類似のメソッド。二進数で 0011 | 0101 => 0111。 arrayで別のメソッドが用意されているようなので、ソースを開いてみました。 [29] pry(main)> show-source Array#| From: array.c (C Method): Owner: Array Visibility: public Number of lines: 19 static VALUE rb_ary_or(VALUE ary1, VALUE ary2) { VALUE hash, ary3; long i; ary2 = … Continue reading Rubyのビット演算子でarrayを操作する