[解決済み] メソッド名の最後にある「!」や「?」は何のため?
2022-11-06 19:11:27
質問
Rubyのメソッドの末尾に"?"や"!"が付いているものを時々見かけます。
name = "sample_string"
name.reverse
name.reverse!
name.is_binary_data?
これらの目的は何なのでしょうか?彼らは単なる構文上の糖衣なのでしょうか?
どのように解決するのですか?
読みやすくするために糖衣をかけただけですが、共通の意味があります。
-
で終わるメソッド
!
永続的または潜在的に危険な変更を行う 例えば-
Enumerable#sort
はオブジェクトのソートされたバージョンを返しますがEnumerable#sort!
はその場でソートします。 -
Railsでは
ActiveRecord::Base#save
は保存に失敗した場合に false を返しますがActiveRecord::Base#save!
は例外を発生させます。 -
Kernel::exit
はスクリプトを終了させますがKernel::exit!
はどんな終了ハンドラもバイパスしてすぐに終了します。
-
-
で終わるメソッドは
?
ブール値を返す を返すので、コードの流れがさらに直感的に文のようになります -。if number.zero?
は "数字がゼロの場合" のように読み取れますがif number.zero
は奇妙に見えるだけです。
あなたの例では
name.reverse
は反転した文字列として評価されますが、それは
name.reverse!
の行は
name
変数が実際に
を含む
を含んでいます。
name.is_binary_data?
は "のように見える。
name
はバイナリデータですか?"となります。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] メソッドと関数の違いは何ですか?
-
[解決済み] Pythonで改行(行継続)をするにはどうしたらいいですか?
-
[解決済み] 一重引用符で囲まれた文字列の一重引用符をエスケープするには
-
[解決済み] PHPの文字列で、シングルクオートとダブルクオートの違いは何ですか?
-
[解決済み] イコール、エクル、==、==の違いは何ですか?
-
[解決済み] Rubyのincludeとrequireの違いは何ですか?
-
[解決済み】Rubyのメソッドで感嘆符が使われるのはなぜ?
-
[解決済み] なぜsumはinject(:+)よりもずっと速いのですか?
最新
-
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のメソッドで感嘆符が使われるのはなぜ?
-
[解決済み】Rubyのメソッド名末尾のクエスチョンマークはどういう意味ですか?
-
[解決済み] レスキューVSシドキック?[クローズド]
-
[解決済み] Rubyの理想的なプロジェクト構造
-
[解決済み] ハッシュの配列をハッシュの値でソートするにはどうしたらいいですか?
-
[解決済み] 今月の名前(Date.today.monthをnameに変換)。
-
[解決済み] Ruby文字列のgsubメソッドとsubメソッドの違いについて
-
[解決済み] define_methodを使ってクラスメソッドを作成するには?
-
[解決済み] Rubyの基本的なプロジェクトはどのように設定するのですか?
-
[解決済み] バージョン要件におけるティルデグレータン(~>)の意味?