No.4ベストアンサー
- 回答日時:
どうしてもわからなければ、「文字列とシンボルは兄弟」と思ってください。
プログラム中に文字列を書くときは、" " や ' ' などで囲みます。
プログラム中にシンボルを書くときは : を前置します(:" " や :' ' で囲んでも良い)。
"abc" == %+abc+ #⇒ 真(同じ文字列の別の書き方。入門書の「%記法」参照)
:abc == :"abc" #⇒ 真(同じシンボルの別の書き方)
★文字列に対してシンボルの長所
代入や等値比較が速い
★文字列に対してシンボルの短所
大小比較が出来ない。正規表現とマッチできない。分解・連結・部分取り出し・書き換えなど加工・編集など一切が出来ない。多分まだまだある。
そういえば、以前もシンボルの説明をしました。
http://okwave.jp/qa/q5800523.html
ここに書きましたが、ハッシュのキーでは、文字列よりシンボルが好んで使われます。長所が生きて、短所が関係ないので。
なお、to_s と to_sym で相互変換できます。
"abc" == :abc #⇒ 偽 (文字列とシンボルは等しくない)
"abc" == :abc.to_s #⇒ 真 (変換して文字列同士の比較で等しい)
"abc".to_sym == :abc #⇒ 真 (変換してシンボル同士の比較で等しい)
putsに対しても相当の誤解があるようですが、どこから説明したものか。
「メソッドとは何か」をまず勉強するのかな。「たのしいRuby」等の定評のある入門書を虚心に読む。
ありがとうございました。
やっぱり私の知識がぜんぜん足りないみたいですね。
実はここで私が使っている本について数回質問したことがあるのですが、
みなさん微妙な反応でした。
やっぱり「たのしいRuby」を買おうと思い、先ほどアマゾンで注文しました。
結構経済的に厳しいですが、がんばってRubyを覚えたいと思います。
No.3
- 回答日時:
>この式は演算子(:name)のハッシュ値として演算子(:ruby)を設定してい
「演算子」という言葉も間違ってますね。
それはさておき、
puts :name で、:name でなく name が表示されるのが不思議ということですが、
puts "name" で、"name" でなく name が表示されるのは不思議ですか?不思議じゃないですか?
この回答への補足
やはりputs :nameみたいな使い方が解説されているとこは見つかりません・・・。
シンボルの癖にシンボル扱いされてないのはなぜなんでしょうか?
回答ありがとうございます。
演算子間違ってますね。確認しました。
puts "name" で、"name" でなく name が表示されるのは不思議ではありません。puts("")は""の中を返すメソッドだからです。
しかし、puts :nameは見たことがないのでわかりません。putsといえば、("")がついているものか、(変数名)がついているものしか本に出てなかったので・・・。ネットで明日(今日?)もう一度調べます。
No.2
- 回答日時:
:ruby というのは ruby という文字列表現を持つシンボル(Symbolクラスのオブジェクト)です。
同様に、
:+ というのは + という文字列表現を持つシンボル。
:" " というのは、空白1文字の文字列表現を持つシンボル。
シンボルという物が何かを理解されてないのでは?と思います。シンボルを簡単に説明するのは難しいですね。「構文解析時に1ワードにしてしまった文字列」でわかりますか?
例えば、aに文字列が代入されているとして、a == "abcdef" という文字列同士の比較だと、C言語レベルでは、strcmpという関数で文字列を一文字ずつ順に比較することになります。
今度は a にシンボルが代入されているとして、a == :abcdef だと、C言語レベルでは整数同士の比較1回で比較が完了します。従って文字列より処理が早いので、加工不要な文字列、例えばメソッドのパラメータなどでよく使われます。
回答ありがとうございます。
いちおう入門書でシンボルのところは読んだのですが、確かに理解していないかもしれません。
この式はその入門書のハッシュのところの練習問題です。
この式は演算子(:name)のハッシュ値として演算子(:ruby)を設定していて、演算子:rubyを設定してないのに、コロンなしのrubyが返ってくるのが不思議だと思っています。
やはりシンボルが理解できていないのでしょうか?
RubyしかやったことないのでC言語での説明はちょっとわかりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP 記述のおかしいところを教えて下さい。 1 2023/02/03 11:25
- その他(プログラミング・Web制作) パイソン初心者です 4 2022/06/29 06:49
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- PHP 掲示板を資料を参考にして開発中ですが、画像がアップされません? 1 2022/11/21 06:44
- PHP プログラムコードを入力する場合改行してもいいですか? 2 2022/10/02 16:05
- JavaScript gasについて 1 2022/05/31 21:51
- JavaScript Javascriptを使ってQRコード読み取り、取得した情報をPOSTしたいと思っています。 1 2023/04/28 15:18
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ビーリアルのユーザー名を変え...
-
100万件越えCSVから条件を満た...
-
パソコンのスクリーンセーバー...
-
(再質問)エクセルのマクロボ...
-
C言語の入力した文字を反転させ...
-
VBA
-
三項でたとえば交換って
-
英数字を含む文字列(0-9,A-Z)...
-
7セグメント LED ディスプレイ ...
-
Ruby on railsをrails sで立ち...
-
WinSCPで画像のように puttyを...
-
pandasでsqlite3にテーブル作成...
-
1、Rstudioで回帰直線を求める...
-
【メモリ不足で落ちる(python)】
-
パイソンのクラス
-
電子書籍epub変換について
-
VBA メモ帳の上書き保存がしたい
-
Accessで文字列のバイト数読み込み
-
実行時エラー450:引数の数が一...
-
このCをDに変える方法を教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正規表現で、英数記号を含むパ...
-
EXCEL VBA Like演算子 パターン...
-
ビット否定(反転)の記号はど...
-
Rubyで文字列の抽出
-
演算子順位法での関数の扱い
-
VBScriptでの正規表現パターン...
-
VBAでダブルコーテーション入り...
-
フォームを開くときに、コンボ...
-
EXCEL/VBA 変数の値をクリップ...
-
足して100になるような乱数のア...
-
Excel-vba 文字列と変数を...
-
C言語 exitの使い方
-
excelの、ある数式内の{}の意...
-
配列の値を置換するにはどうす...
-
C言語 列挙型(enum型)変数について
-
VisualStudio2022でC言語プログ...
-
エクセルへのデータの貼付時に...
-
テキストボックスの値を変数に...
-
初心者が簡単なPowerShellスク...
-
Variant型で宣言してるのにEmpt...
おすすめ情報