なぜ感嘆されているRubyの方法を教えてください。
-
03-07-2019 - |
質問
Rubyで一部の方法は,question mark(?
としくお願いいように 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の授業です。でもどこでもできるもので、今のうって変更されごのコードです。
他のヒント
の感嘆符とは、いろいろなものができないくらいその他にも"これは危険ですので、ご注意".
と述の標準的な方法であることを示すために使用される方法の原因となるオブジェクトの変更にもなります。なお多くの標準的な方法の変更受信機となっている感嘆符(pop
, shift
, clear
しない一人前の方法と感嘆符ポイントなの変更受信機exit!
).見 この記事 ります。
他の図書館を利用では異なります。レールでは、感嘆符が多いとはこのメソッドは例外をスローする故障により失敗を黙々と.
この命名規則は多くの人が利用で微妙に異なる。自分のコードの詳細は利用できる方法であって何かをする"危険"、二つの方法と同じ名前で存在しているが、その一つが"危険"を付けます。"危険"ではほぼ何ものです。
このネーミングコンベンションは上から スキーム.
1.3.5命名規約
規則にしたがって、名前の手続き ることを常に返しますboolean値 通常の末尾が`?".などの手続き という述語.
規則にしたがって、名前の手続き この店舗の価値を入れ 割当箇所を参照3.4) 通常の末尾が`!".などの手続き と呼ばれる突然変異の手続きによる 条約は、返される値 突然変異の手続きは未指定です。
!通常、この法行為のオブジェクトで返します。から グルビー:
方法として"危険"もしくは変更の受性を示すものと考えられ名前が付けられ末尾に"!".
からthemomorohoax.com:
ガンマ線バーストの研究で利用できる以下の方法で図表年後の物価に対する私の個人的好みです。
1)活動記録方法を誤る場合の方法はない どういうようになります。
2)活動記録方法で保存する記録の方法で保存 オブジェクト(例えばストリップ!)
3)メソッドは何か"を追加"のように投稿するにあぁ、いずれ 一部です。
そのポイントは:のみを使用してくださbangた場合には、本当に思いかどうかについて ることが必要ですを保存、または、他者に迷惑を気にすること チェックをなぜ使用されました。
のバーンについてのヒンブランドをディベロッパーに
1)必要がないために保存するオブジェクトを呼び出した後の 方法。
2)のときにメソッドを呼び出し、dbのかを変えることができます。
http://www.themomorohoax.com/2009/02/11/when-to-use-a-bang-exclamation-point-after-rails-methods
最も正確とは言い方法Bang!のり 危険 または 驚き バージョン。多くの方法を変化させずにガンマ線バーストの研究など .destroy
一般的方法だけで前髪パーツがより安全な代替に存在する核lib.
例えば、配列ていま .compact
や .compact!
, 両方の方法の変更の配列が、 .compact!
nilを返します代わりに自己がない場合は空の配列のは驚きだけを返します。
非ひとつのメカニズムの方法がその場で発音を確認することがとガンマ線バーストの研究が Kernel
's .exit!
は驚くよ .exit
ることができないため、漁 SystemExit
中に閉会となりました。
レールActiveRecordいてこの傾向を利用する場合は、その近りますので驚きの'のような影響 .create!
を引き上げるような誤りです。
簡単な説明:
foo = "BEST DAY EVER" #assign a string to variable foo.
=> foo.downcase #call method downcase, this is without any exclamation.
"best day ever" #returns the result in downcase, but no change in value of foo.
=> foo #call the variable foo now.
"BEST DAY EVER" #variable is unchanged.
=> foo.downcase! #call destructive version.
=> foo #call the variable foo now.
"best day ever" #variable has been mutated in place.
だんと呼ばれる方法 downcase!
の説明は、上記 foo
うに変更downcaseます。 downcase!
ない新しい文字列を返しオブジェクトが置換文字列の場合、変更の foo
にdowncase.私は使わない downcase!
ない限り、全く必要がある。
!
のではないかと思いたいこととして爆発的な変更を破棄すべてのかたすことが期待されていますバーンまたは感嘆符マークが表示されている場合は永久に保存した変更コードです。
ご利用の場合例えばRubyの方法のためのグローバル置換gsub!
置換すが永続的なものにします。
別の言い方を想像できるので、開くテキストファイルと検索して置換、次いでいます。 !
は同様のコードです。
もう一つ、有用なリマインダから来る場合にはbashの世界 sed -i
この同様の効果の永久保存されます。
という破壊的方法"で変化する傾向があり、元のオブジェクトのコピーすを参照しています。
numbers=[1,0,10,5,8]
numbers.collect{|n| puts n*2} # would multiply each number by two
numbers #returns the same original copy
numbers.collect!{|n| puts n*2} # would multiply each number by two and destructs the original copy from the array
numbers # returns [nil,nil,nil,nil,nil]
ボトムライン: !
方法を変えるだけの値をオブジェクトでこれまでの方法によ !
を返します操作の値を書かずに、オブジェクトのメソッドが呼び出されたとき。
ご利用に限 !
ない場合は計画を必要と元の値を格納での変数をまと呼ばれる方法です。
うように:
foo = "word"
bar = foo.capitalize
puts bar
または
foo = "word"
puts foo.capitalize
の代わりに
foo = "word"
foo.capitalize!
puts foo
うようにアクセス元の値です。