:"foo"
および:'foo'
引用符付きの表記法はシンボル リテラルですか:
、それとも文字列の単項演算子ですか?
3 に答える
3
:
実際には、自分で入力するか、メソッドを介して作成するリテラルの一部にすぎません。:
名前またはを使用してリテラルを作成できますが"string"
、演算子とは異なり、アクションを引き起こしたり、値を変更したりしません。
いずれの場合も、Symbol のインスタンスが返されます。:
文字列表記で書くことが重要な場合があります。たとえば、記号として空白を含む文字列を表現したい場合は、文字列表記を使用する必要があります。
> :foo
=> :foo
> :foo bar
SyntaxError: (irb):2: syntax error, unexpected tIDENTIFIER, expecting end-of-input
> :"foo bar"
=> :"foo bar"
さらに、これを等価演算子で調べるのは興味深いことです。(==)
> :"foo" == :foo
=> true
> :"foo " == :foo
=> false
私のアドバイスは、文字列や名前を渡してシンボルを作成することではなく、同じシンボルを表現するさまざまな方法であると考えてください。最後に、入力したものがオブジェクトに解釈されます。これは、さまざまな方法で実現できます。
> :"foo"
=> :foo
結局のところ、%w(foo bar)
別の書き方でもあり['foo', 'bar']
ます。
于 2013-08-10T13:56:53.103 に答える
1
シンボル リテラルに関する Ruby のドキュメントには、次のように書かれています。
コロンを使用してシンボルを参照できます:
:my_symbol
.補間によってシンボルを作成することもできます。
:"my_symbol1" :"my_symbol#{1 + 1}"
基本的:"foo"
に とはシンボル リテラルですが、補間:'foo'
を使用してシンボルを作成する場合に役立ちます。
于 2013-08-10T13:27:13.037 に答える