レールにシンボルを使用することを理解できません。私はほとんどの場合、シンボルは単に何か(または文字列)の名前であることを理解しています。たとえば、:name => "John Doe", :email => "[email protected]"
です。ただし、次の例では、シンボル:post
はプログラムのどこにも定義されていませんが、まだ使用されています。 <%= form_for :post, url: posts_path do |f| %>
:post
シンボルは何と関連していますか?レールで作業するとき、どのように記号を見ますか?レールにシンボルを使用することを理解できない
答えて
シンボルは「物の名前」ではなく、それ以外のものには関連付けられていません。シンボルはそれだけです:シンボル。固有の識別子を持つが内部でに関連付けられていますが、これは実装の詳細です。
この場合、シンボル:post
は、それが呼び出し元スコープにpost
という変数を探して、フォームのフィールドを埋めるためにそれを使用する必要がありますform_for
機能と通信する以外に何の役割を持っていません。シンボルのシンボリック表現は、メソッドがその変数の位置を特定し、そのフィールドの名前を付けるのに役立ちますが、シンボル:post
はコードの他の場所で定義されたものとは関連付けられていません。あなたが:post
シンボルを定義したコード内:post
を使用することにより
返事ありがとう!私は、特定のシンボルがどのように変数を見つけるかを「知っている」ということについて、私が混乱していると思いますか?それはシンボル自体の名前と関係がありますか? say:postは、 "post"というローカル変数を探しますか? –
番号シンボルは、変数とはまったく関係がありません。シンボルはシンボルです。変数を示すために*使用されるかもしれませんが、列挙された値を示すためにも、または米国高速道路を示すためにも使用できます。シンボル ':post'と変数' post'の間には、*関係はありません。なし。 –
が、これらは自動的に新しい名前に遭遇したり、文字列がto_sym
を経由して、手動でシンボルに変換されるたびに作成されます。
シンボルは、文字列の文字列と比較して頻繁に繰り返し使用されると、より効率的です。彼らは「内在化された文字列」、またはいくつかの記述では「インターン」であり、内部的に辞書に効果的に追加されています。
"post"
は、コード内の多くの場所に存在する可能性のある文字列です。それぞれの文字列は、メモリが割り当てられた独立した文字列です。それらの1つを別のものと比較するには、文字列の比較を行う必要があります。
一方、:post
は常に同じオブジェクトを参照します。これにより、比較が大幅に簡単になり、さらにメモリが1回だけ割り当てられます。
- 1. URLシンボルと使用法を理解する
- 2. Android - シンボル 'KmlLayer'を解決できない
- 3. シンボルを解決できないSetLayoutManager - Android
- 4. シンボルを解決できないAdView
- 5. セレクターとバインディングの使用を理解できない
- 6. テーブルに挿入するときにシンボルを使用できない
- 7. FCMを使用してAndroid通知用の 'NotificationChannel'シンボルを解決できない
- 8. CMDで引用符を使用することの理解
- 9. IEnumerable.interfacesをカスタムコンバーターで使用すると、動作が理解できない
- 10. unittestを使用するときにPythonのスコープを理解しない
- 11. パラメータ化されたログを使用する理由を理解できない
- 12. エラーLNK2019:SendInput()を使用しているときに未解決の外部シンボル
- 13. Djangoは:Djangoは「home.html」を検索することができない理由を私は理解できない
- 14. ボレーのキャッシュを使用するとシンボルcacheEntry.lastModifiedを解決できません
- 15. ES6シンボルの理解
- 16. .enter()関数を使用してPythonを理解できない
- 17. 私は新しい学習者と私はここで、レールにブートストラップコードを使用して混乱していますブートストラップコードを理解し、私は重要な部分でレールに使用する方法がわからない
- 18. エラー: 'AdRequest'と 'AdView'のシンボルを解決できない
- 19. ナップザック - プログラミング中にセクションを理解することができない
- 20. AWSラムダ関数を開発するときに使用するJava SDKを理解できない
- 21. これが私にエラーを与える理由を理解できない
- 22. リモートでレールを使用しているときにポップアップが機能しない
- 23. Android AWS SDKの使用方法を理解できない
- 24. シンボルを読み取ることができない
- 25. if/elseステートメントを使用しているときに 'シンボルを解決できません'
- 26. Spring MVCで@ModelAttributeアノテーションと@RequestAttributeアノテーションを使用することを理解する
- 27. レール4にテストユニットを使用することはできますか?
- 28. Color.webを使用しているときにJavaFXがシンボルを見つけることができません
- 29. :シンボルをレールに定数
- 30. 配列にランダムにアクセスするときにMath.floorを使用することを理解する
':post'は何も関連付けられていません。 '123'のように単なるリテラルです(https://ruby-doc.org/core-2.1.1/doc/syntax/literals_rdoc.html)。 (これはRails固有のものではないRubyの質問ですので、Railsタグを削除する必要があります) –
[Symbol](https://ruby-doc.org/core-2.1.1/Symbol.html)も参照してください。 –
私はCarySwovelandのコメントとmeagarとtadmanの回答の組み合わせが、この質問に対する完全で受け入れやすい回答になると思います。 –