Rubyで「~」記号は、主に否定演算子として、また正規表現のマッチング、特殊なメソッド名の一部として使用されます。
1. 否定演算子(Bitwise NOT)
否定演算子としての「~」は、ビット単位の否定を行うために使われます。これは、整数の各ビットを反転させる操作です。
例:
a = 0b0101 # 5の二進数表現
~a # => -6
この例では、0b0101の各ビットが反転され、0b1010の補数が計算されます。Rubyでは整数は補数形式で保持されるため、結果は-6になります。
2. 正規表現マッチ演算子
「~」は正規表現と文字列のマッチングにも使用されます。この場合、正規表現オブジェクトに対して使用され、マッチした場合はその位置を、マッチしない場合はnilを返します。
例:
"hello" =~ /e/ # => 1
/e/ =~ "hello" # => 1
注釈:
最初の例では、「hello」の中で「e」が最初に現れる位置(1)を返しています。
二番目の例では、同じ操作を~を使って行っています。
3. 単項演算子としての使用
Rubyでは、~をオーバーロードして、クラスによっては特殊な意味を持たせることができます。
例:
class MyNumber
def initialize(num)
@num = num
end
def ~
-@num
end
end
n = MyNumber.new(5)
~n # => -5
注釈:
この例では、MyNumberクラスで~演算子をオーバーロードし、オブジェクトの数値の符号を反転させる
機能を定義しています。nがMyNumberのインスタンスである場合、~nはnの数値の符号を反転させた値(この場合は-5)を返します。
まとめ
この記事は一度作ったものの修正です、コメントをいただいていたのですが、初めてのコメントに動揺して間違えて削除してしまったため、修正し再投稿します。
以前コメントをいただいた方ありがとうございました。