ていうか代入文のほうがメソッド呼び出しより先?
そうするとselfつけないとダメだから、selfって何?みたいなことになって困るじゃん。
selfつけるくらいならglobalってつけるようにしたほうがいいかな。Aはglobal.a、ってこれじゃ一文字変数の意味ねーじゃん。という状態に。あわわ。
あれか。set_resultとかやって、代入するようにするか。いやいやいや。=で代入できるからいいんじゃないか。しかしうーんこれはどうしたものか。本当に困った。
それにしても使い捨ての無名クラスを多用してるから長い時間動かしてるとメモリすごいことになるんじゃないかという心配が出てきた。適度にGC.startしないとだめかなあ。明示的にdisposeできればいいんだけどそういう言語じゃないし。
* * *
GC.startしたら結構メモリ消費減るなあ。そもそもたいした容量食ってないっぽいしあんまり気にしなくてもいいかもしれない。
* * *
広域変数については、moneyとかtimeとかで+=/-=できないのは非常に不便なので、setter/getter形式にしないで、Rubyのaccessor形式のままアクセスできるようにしたい。
ということで、まず、変数情報オブジェクトを用意して管理する。どっかのスタティック変数に変数情報オブジェクトを保持して、varで経由で変数を参照/代入する。var.moneyとかvar.resultとかそういうふうに呼び出す。ことにした。globalだとゲームデータ的なグローバルと紛らわしいから、varで。varならそこそこ分かりやすいかもしれないし、それなりに短いし、ローカル変数と間違うこともないし、これがいいんじゃないかな。いいよね。いいことにする。
で、TALENTとかABLとかいつでも配列として扱う変数はいちいちvarつけるのは面倒だし、つける必要もないと思うから、これは別の方法で考えよう。
とりあえずは非配列変数としても扱われる変数類をvarに紐付けることを済ませる。
* * *
あと、countいらないよね。erabasicのREPEAT n ... REND構文は、Rubyだとこう書ける。
10.times do |i| print array[i] end
Integerのtimesメソッドを使うわけだ。repeat関数を用意して、ERBと同じような書き方にすることもできるだろう。
repeat 10 do |i| print array[i] end
もっとも、そもそもこういう文なら、
array[0..10].each do |val| print val
でよかったりするんだけど、これはRubyに慣れてないと分かりにくいだろうから、repeatでもtimesでも書けるようにはする。
もちろんこれは、
for i in 0..10 print array[i] end
なんていうふうにも書けるから、そういう書き方もありだろう。これはEmueraの
FOR LOCAL, 0, 10 PRINTFORM %STR:LOCAL% NEXT
と似たような書き方だから、そんなに抵抗もないと思いたい。var経由でないとアクセスできないからcountがあっても使いにくいしそんなに困らないんじゃないかな。
コメントをかく