スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ruby のシンボルと文字列

TECS ジェネレータは ruby を使用して実装していますが、ruby を使っていて困ったことというか、落とし穴になる部分を記します。
# ruby マニュアルの「Ruby の落とし穴」にはない事項であり、あまりはまらないことなのかもしれませんが

シンボルと文字列の区別を意識しないまま実装していて、だいぶ実装が進んだところで、区別できていないことに気づきました。このため、現時点でも区別できていないままになっています。
いつか整理したいのですが、いまだにできていません。

TECS ジェネレータの実装で == を文字列で比較している箇所があります。
またハッシュ変数の添字が文字列になっているものもありえます(ないかもしれませんが、区別できないまま実装していた部分では、よくわかっていません)

解説している記事を見るとシンボルを使ったほうが効率がよいと書かれています。
最初から、そこを意識していればよかったのですが、長い間それにまつわる不具合にぶつかることがありませんでした。

そこが ruby の使い安さであり、初心者はとりあえず知る必要がないことだと思います。
しかし、ruby で最初に書いたプログラムが TECS のジェネレータというような大きなものを作った筆者にとって、思わぬ落とし穴になりました。

ruby について、私には機能やら仕様やら理解できていないところが多々あるようです。
いまだに初心者の域を脱し切れていないかもしれません。
スポンサーサイト

トラックバック


この記事にトラックバックする(FC2ブログユーザー)

RubyとC言語における文字列リテラルの違い

こちらのブログ(TECS 開発ブログ ruby のシンボルと文字列)で触れられているrubyのシンボルと文字列の違いについでですが、私はRubyとC言語における文字列リテラルの扱いの違いの影響の方が大きいのではないかと思います。 C言語で char *a = “ABCEDFG”; ch...

RubyとC言語における文字列リテラルの違い

こちらのブログ(TECS 開発ブログ ruby のシンボルと文字列)で触れられているrubyのシンボルと文字列の違いについでですが、私はRubyとC言語における文字列リテラルの扱いの違いの影響の方が大きいのではないかと思います。 C言語で char *a = “ABCEDFG”; ch...

コメントの投稿

非公開コメント

プロフィール

hiro22022

Author:hiro22022
TECS 開発ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。