ダイナミックにインスタンス化
Railsのメモ.
文字列(クラス名)からインスタンス化させようとしたとき,Rails上ならこれでいける.
cls = "ClassName".constantize
obj = cls.new
# とか,
module_name = "ModuleName"
class_name = "ClassName"
cls = "#{module_name}::#{class_name}".constantize
obj = cls.new
といける.
constantizeを覗いてみると,Object.module_eval() をしていた. 結局evalですよね.evalしないでうまくやる方法を探していたんですがね. もちろん,ハッシュでクラスを定義しちゃうっていうのが楽なんですがーちょっと数が多くてね.
メモ:Python Ruby
PythonでいうこれをRubyでやろうとしたらー探してしまったのでメモっとく(実は前にやっているのに忘れたからメモる!)
In [10]: def Hoge(val):
....: def Hige(val2):
....: print val
....: print val2
....: return Hige
....:
In [11]: Hoge('HOGE')('HIGE')
HOGE
HIGE
Rubyでは,
>> def Hoge(val)
>> return Proc.new do |val2|
>> p val
>> p val2
>> end
>> end
=> nil
>> Hoge('HOGE').call('HIGE')
"HOGE"
"HIGE"
でいいのかな!? どちらかと言うとーPythonの方がちょっと変な気もしなくもないかも!?
諦めないiPhoneFix
てなわけで,家に環境がないので会社で挑戦! とは,いっても会社ではMacなのでWindowsがない! BootCampでWindowsをぶち込み挑戦!
VMwareをインストールして,解凍したiPhoneFixのVMwareイメージを読み込んだ!Ubuntu起動☆
そして/PROJECTS/にあるサンプルのHelloWorldをコンパイルしてみる! ん?できたのか?ミスったのか?わからない!日本語でも英語でもない!ということでLANGを修正してもう一度試したら成功しているようだ!
さてさて,自分のをコンパイルしてみよう! と思ったがーVMwareのネットワークの設定,Sambaの設定しないと俺のコードもっていけないじゃーん. 時間がないから今日はここまで!
iPhoneFix ...
iPhoneFixダウンロードするのに4時間はかかった…. そして解凍するのも時間がかかった…. 解凍(tar.bz2)をWindowsで適当に解凍したら,VMwarePlayerで読み込んでもらえなかった…. (READMEで指定されていた)Winrarで解凍したらOKでした. がっ!今度はメモリ不足で起動できない….俺のWindows512MBしか積んでない!メモリの設定を変更したけどダメだったっ!
えっ!?もしかして俺ここまで!?今更Windowsに金使う気ないよ! そんなことで金使うくらいならーiPhoneSDKを買うよ!
さて,どうやってtryしよう…
メモ:iPhoneFix
あとで読む
色々試したんだが,iPod touchのコンパイル環境がLeopard上でうまく構築できない!
だもんでー今度はこれでやってみることにする.(VMware for Windows)