2009年
5月
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

setup diary

2007|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|06|08|11|
2015|01|02|03|04|05|06|07|08|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|

2009-05-08 rubyのsymbol

_ シンボルクラス

ある文字列で指定されたメソッドを呼び出すときに、これまではevalを使って、
eval('"test".%s'%["size"])
などとしていた。evalはバグの原因になりやすいので、あまり使いたくはないのだが、これ以外の方法が分からなかったので、仕方なくそうしていた。 しかし、symbolというのを使うと、次のようにもっとスマートにできるようだ。
"test".send("size".to_sym)
"test".send(:size)
文字列で管理していたものを、symbolで管理して、必要に応じて文字列に変換するようにすれば良いように思われる。 1.8.7では動いているが、いつからあったのだろう。クラスを定義していて、インスタンス変数を外部からアクセスするために、
attr_accessor :name
などと書いているときに、コロンはなんだろうと思ってはいたが、実はこれはシンボルを表すものだったのか。