"foo"[0] = ?b # "boo"
私は上記の例を見て把握しようとしていた。"b"はRubyで 'b'を意味するのはなぜですか?
- 「bは?」の文字「b」を意味しますどのように?
なぜ必要なのですか?
"foo" という[0] = 'B' # "ブーイング"
"foo"[0] = ?b # "boo"
私は上記の例を見て把握しようとしていた。"b"はRubyで 'b'を意味するのはなぜですか?
なぜ必要なのですか?
"foo" という[0] = 'B' # "ブーイング"
Ed Swangren:? 文字の文字コードを返します。
Ruby 1.9にはありません。 1.9現在、?a
は 'a'を返します。ここを参照してください:Son of 10 things to be aware of in Ruby 1.9!
telemachus ~ $ ~/bin/ruby -v
ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-linux]
telemachus ~ $ ~/bin/ruby -e 'char = ?a; puts char'
a
telemachus ~ $ /usr/bin/ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
telemachus ~ $ /usr/bin/ruby -e 'char = ?a; puts char'
97
編集:changes in Ruby 1.9の非常に完全な説明を。
もう1つの編集:?a
を使用して文字列を1.8に変換する場合は、'a'.ord
を使用できるようになりました。
: - 私はこれを書き込めませんでしたか?文字の文字コードを返します。 Here is a relevant post on this.
この変更は、Ruby 1.9のUTF-8アップデートに関連しています。
?
のRuby 1.8バージョンは、シングルバイト文字でのみ動作しました。 1.9では、マルチバイト文字を扱うためにすべてを更新しました。問題は、どの整数が?€
から返されるべきかは不明です。
返すものを変更して解決しました。 1.9において、以下のすべてが単一要素の文字列であり、等価である:
?€
'€'
"€"
"\u20AC"
?\u20AC
彼らは行動を変える(多少ランダム)IMO、表記を落とし、なくておく必要があります。しかし、公式には非難されていません。
一部の言語(Pascal、Python)では、文字は長さ1の文字列です。
他の言語(C、Lisp)では、文字が存在し、 'x'や#\ xなどの特殊な構文を持っています。
Rubyはほとんどが "charsは存在しません"の側にありましたが、時にはこの選択肢が完全にはわからないようでした。 をにすると、データ型としてcharが必要ですが、Rubyはすでに "と" "に意味を割り当てていますので、?xはcharリテラルの他のオプションと同じように見えます。
私にとっては、あなたが何を意味するのかということだけです。あなたはfoo [0] = 98と言うこともできますが、実際に文字を意味するときは整数を使用しています。文字を意味するときに文字列を使用すると、私にとっても同じように見えます。サポートする一連の操作はほぼ完全に異なります。 1つはもう一方のシーケンスです。 Math.sqrtに数字のリストを渡すことはできません。ちょうど最初のものを見るだけです。 「整数のリスト」をすでにサポートしているからといって、言語から「整数」を省略することはありません。
(実際には、Lisp 1.0はすべてのことについて教会の数字にすぎませんでしたが、パフォーマンスは非常に厳しいものでしたので、これは1962年に実際の言語として使用できるLisp 1.5の大きな進歩の1つでした。 )
私は「a」の代わりに「a」というだけの理由はありませんか? –
irbの例をありがとう。この記事でもこの点が指摘されています。だから1.9では、?aはあなたに文字「a」を与えます。 'a'を得るのは、珍しく不必要に複雑な構文ではありません。なぜだけではない: 'a'? –
だから、書き込む文字数は少なくなるでしょうか? それは理由でしょうか? –