
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ランキング
-
(再質問)エクセルのマクロボ...
-
パソコンのスクリーンセーバー...
-
ruby 配列
-
Ruby require ライブラリー
-
ruby OpenURI::Meta
-
ルビー言語 ライブラリー 追記
-
ruby ensure句
-
ルビー言語 ライブラリー(再々...
-
実行時エラー450:引数の数が一...
-
ruby loopメソッド 変数(再喝)
-
教えてください
-
文字コードのエラー
-
ruby while式
-
ruby loopメソッド 変数
-
ruby raise句
-
ruby begin句
-
pandasでsqlite3にテーブル作成...
-
100万件越えCSVから条件を満た...
-
プログラミング
-
7セグメント LED ディスプレイ ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCEL VBA Like演算子 パターン...
-
正規表現で
-
正規表現で、英数記号を含むパ...
-
消えたコロン
-
VBAでダブルコーテーション入り...
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
Excel-vba 文字列と変数を...
-
excelの、ある数式内の{}の意...
-
EXCEL/VBA 変数の値をクリップ...
-
VB6.0-整数と余りを求める
-
配列の値を置換するにはどうす...
-
vbsでテキストファイル内の文字...
-
jsp~jspにhiddenを使って変数...
-
VBAのWorksheetFunctionの引数...
-
エクセル、この関数の意味は?
-
COLUMN(1:1)の意味を教え...
-
[VBS]変数を定数に変換する方法...
-
C#で動的にコントロールを取得...
-
テキストボックスの値を変数に...
おすすめ情報