:xyz == 'xyz'
がfalse
であることを確認しました。しかし、レール内の関数を:index
または'index'
と呼ぶことができます。私の不思議をクリアしてください。シンボルの違いは何ですか?
答えて
:xyz
はシンボルです。シンボルはクラスSymbol
のインスタンスです。
"xyz
"という文字列である。文字列がシンボルでない。したがって
:xyz
あるSymbol
のインスタンスは文字列xyz
のインスタンスと等価ではないので、:xyz=='xyz'
は真ではない。
:xyz
と'xyz'
は実際には異なります。これは、メソッドがいずれかの型の引数を取ることができるという事実と矛盾しません。例えば、Array#*
は、引数としてString
またはInteger
をとることができます。
["a", "b"] * "foo" # => "afoob"
["a", "b"] * 2 # => ["a", "b", "a", "b"]
それは"foo"
が2
と同じであることを意味するものではありません。
あなたが暗示しているロジックに従えば、Rubyのすべてのオブジェクトが同じであることを意味します。
私は
:xyz == 'xyz'
がfalse
であることを確認しました。しかし、我々は:index
または'index'
とレールの内側の関数を呼び出すことができます。私の不思議をクリアしてください。
これについて不思議なことは何もありません。
Symbol#==
は他の方法と同様の方法です。それを書いた人は、false
を返すように書いた。彼女はtrue
を返すか、42
を返すか、あなたのハードディスクをフォーマットするよう書いたかもしれませんが、彼女はfalse
を返すことに決めました。
Railsメソッドは他のメソッドと同様のメソッドです。それらを書いた人は、Symbol
またはString
のいずれかを受け入れるように書いた。彼女はSymbol
秒かString
秒しか受け入れないように書いてもいいし、週の偶数日にString
秒しか受け入れることができず、満月の間にはInteger
sだけだが、彼女はString
とSymbol
の両方を受け入れます。
Rubyを書く開発者とRubyを書く開発者は、あなたが書いたメソッドで自由にできるように、自由に自分のメソッドで自由に行うことができます。 String
を受け入れるメソッドを書くことができます。Symbol
を受け入れるメソッドを書くことができます。両方を受け入れるメソッドを書くことができます。どちらも受け入れないメソッドを書くことができます。 RailsとRubyの開発者の選択と同じように、あなたの選択です。
Symbol
とString
の間の関係については絶対に何も意味しません。
はい、それは自由意志開発者がプログラミング言語で行っているように、その背後には理由/論理的な説明があります –
RailsのHashWithIndifferentAccess
の使い方を知っていると思います。これにより、シンボルまたは文字列のいずれかを使用してハッシュにアクセスできます。
つまり、内部でHashWithIndifferentAccess
がすべてのキーを文字列に変換するため、params[:a]
はparams["a"]
と同じです。
詳細については、documentationを参照してください。
http://www.reactive.io/tips/2009/01/11/the-difference-between-ruby-symbols-and-stringsを参照してください。これは文字列と記号を明確に説明しています。 特に文字列とシンボルのパフォーマンスのセクションで、文字列の上にシンボルが使用される理由が説明されています
- 1. 違いは何ですか?
- 2. 違いは何ですか?
- 3. ILコードのシンボルは何ですか?
- 4. キューのシンボルとは何ですか?
- 5. brightscriptの `<>`シンボルは何ですか?
- 6. JetBrains IDEの「シンボル」とは何ですか?
- 7. リアクションキーの有効シンボルは何ですか
- 8. Goのシンボル[:]は何ですか?
- 9. "___emutls_get_address"シンボルとは何ですか?
- 10. 「シンボル警告」とは何ですか?
- 11. "_ZN7android16CameraParameters9isPreviewE"シンボルとは何ですか?
- 12. \シンボルはC++で何をしますか?
- 13. window.innerWidth window.outerWidthの違いは何ですか?
- 14. $と$$の違いは何ですか?
- 15. http_basic_authenticate_withwith authenticate_or_request_with_http_basicの違いは何ですか?
- 16. LocationListener LocationCallbackの違いは何ですか?
- 17. `##`と `hashCode`の違いは何ですか?
- 18. typedefとの違いは何ですか?
- 19. NodeJS:「./ ..」と「..」の違いは何ですか?
- 20. レイアウトコードの間違いは何ですか
- 21. CloudBlobサブクラスの違いは何ですか?
- 22. 真の違いは何ですか?ブール
- 23. {}())と{})の違いは何ですか?
- 24. アセンブリのタイプ - 違いは何ですか
- 25. `&`と `ref`の違いは何ですか?
- 26. Orientdbエディションの違いは何ですか?
- 27. `==`と `is`の違いは何ですか?
- 28. difftimeと ' - 'の違いは何ですか?
- 29. #{} $ {}と%{}の違いは何ですか?
- 30. ⊕と+の違いは何ですか?
_「関数内部では関数を呼び出すことができます」_ - – Stefan
はレールコントローラ内で機能します。 –
def indexは、redirect_to 'index'またはredirect_to:index bothを使用してリダイレクトできます。両方が同じ理由であるかどうか尋ねる。それがクリアされた。ありがとう –