Ruby メソッドで感嘆符が使用されるのはなぜですか?
概要
Ruby では、一部のメソッドには、include? のような質問をする疑問符 (?) が付いています。問題のオブジェクトが含まれているかどうかを尋ねると、true/false が返されます。
しかし、一部のメソッドには感嘆符 (!) があり、他のメソッドには付いていないのはなぜでしょうか?
それはどういう意味ですか?
解決策
一般に、! で終わるメソッドは、メソッドが呼び出されたオブジェクトを変更することを示します。 Ruby はこれらを「危険なメソッド」と呼んでいます。これは、他の誰かが参照している可能性のある状態を変更するためです。文字列の簡単な例を次に示します。
foo = "A STRING" # a string called foo
foo.downcase! # modifies foo itself
puts foo # prints modified foo
これにより以下が出力されます:
a string
標準ライブラリでは、類似した名前のメソッドのペア (! が付いたメソッド) が多くの場所で見られます。そしてなしのもの。そうでないものは「安全なメソッド」と呼ばれ、呼び出し先を変更せずに、コピーに変更を適用した元のコピーを返します。 ! を除いた同じ例を次に示します。
foo = "A STRING" # a string called foo
bar = foo.downcase # doesn't modify foo; returns a modified string
puts foo # prints unchanged foo
puts bar # prints newly created bar
これにより次の出力が出力されます。
A STRING
a string
これは単なる慣例ですが、多くの Ruby クラスがこれに従っていることに注意してください。また、コード内で何が変更されたかを追跡するのにも役立ちます。