[解決済み】Rubyのメソッドで感嘆符が使われるのはなぜ?
2022-03-23 18:14:54
質問
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クラスはこれに従っていることを覚えておいてください。また、コード内で何が変更されたかを追跡するのにも役立ちます。
関連
-
[解決済み] レイルズ・ジェネレート」を逆手に取る方法
-
[解決済み] Homebrew Portable Ruby のインストールに失敗しました (システムのバージョンが古すぎる場合もあります)
-
[解決済み] gemをインストールできない - makeが内部または外部のコマンド操作可能なプログラムまたはバッチファイルとして認識されない。
-
[解決済み] Rubyで中央値を計算する
-
[解決済み] Ruby: 文字列をブーリアンに変換する方法
-
[解決済み] ネストされたクラスとモジュールにネストされたクラスはいつ使用するのですか?
-
[解決済み] Rubyでfailキーワードは何をするのですか?
-
[解決済み] Rubyで「例外 => e」を救済するのはなぜ悪いスタイルなのですか?
-
[解決済み] イコール、エクル、==、==の違いは何ですか?
-
[解決済み] 実行時にメソッドが定義されている場所を見つけるには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Ruby:kind_of? vs. instance_of? vs. is_a?
-
[解決済み] Rubyのローカル変数が未定義である
-
[解決済み] Aptana Studio 3.6をWindowsにインストールできない
-
[解決済み] Ruby on railsで改行せずにコンソールに "puts "を使用するにはどうすればよいですか?
-
[解決済み] Rubyで配列を降順にソートする方法
-
[解決済み] Rubyでリモートホストの到達可能性をpingで確認する方法
-
[解決済み] マトリックスサムネーションチャレンジ
-
[解決済み] Ruby: 文字列をブーリアンに変換する方法
-
[解決済み] Ruby 1.8.7 ハッシュを文字列に変換する
-
[解決済み] 配列からランダムに選択する方法は?