[解決済み] Rubyのアンパサンドコロンのショートカット [重複] [重複
2022-03-17 07:34:49
質問
重複の可能性があります。
Rubyでmap(&:name)はどういう意味ですか?
Rubyでは、やればわかるんです。
some_objects.each(&:foo)
と同じです。
some_objects.each { |obj| obj.foo }
ということです。
&:foo
はブロックを作成します。
{ |obj| obj.foo }
を作成し、それをProcに変換し、それぞれに渡します。 なぜこのようなことができるのでしょうか? 単なるRubyの特殊なケースなのか、それともこのように動作する理由があるのでしょうか?
解決するには?
あなたの質問は、いわば間違いです。ここで起こっているのは、"アンパサンドとコロン"ではなく、"アンパサンドとオブジェクト"なんです。この場合のコロンは、記号を表すものです。つまり、次のようになります。
&
であり
:foo
.
は
&
が呼び出す
to_proc
を生成し、それをブロックとしてメソッドに渡します。Rubyでは
to_proc
が実装されているのは
Symbol
ということで、この2つの呼び出しは等価である。
something {|i| i.foo }
something(&:foo)
では、まとめます。
&
コール
to_proc
を実装し、それをブロックとしてメソッドに渡しています。
to_proc
の上に
Symbol
.
関連
-
[解決済み】Ruby: 特定のバージョンのruby gemをインストールする方法は?
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Rubyで配列に値が存在するかどうかを確認する方法
-
[解決済み] Rubyからシェルコマンドを呼び出す方法
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] Rubyで文字列を小文字・大文字に変換する方法
-
[解決済み] Rubyのattr_accessorとは何ですか?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] Rubyのclass << selfイディオム
-
[解決済み】RubyにあってPythonにないもの、またその逆は何ですか?
最新
-
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 on railsで改行せずにコンソールに "puts "を使用するにはどうすればよいですか?
-
[解決済み] Rubyでランダムな文字列を生成する方法
-
[解決済み] Ruby で Fixnum から String への暗黙の変換ができない (TypeError)
-
[解決済み] Rubyでリフレクション?
-
[解決済み] Ruby Net::HTTPの実行期限が切れた
-
[解決済み] Rubyにバイナリ検索は組み込まれていますか?
-
[解決済み] 変数が整数であるかどうかのチェック
-
[解決済み] Rubyのmap(&:name)ってどういう意味?
-
[解決済み] Rubyで配列を1つの文字列に結合する