eraシリーズ改造/バリアント開発の覚え書き

2月2日の雑記


しばらく別の活動をしていて、こっちのことをほったらかしにしてしまっていたんだけど、ネックになっている変数の仕様をどうしようか、ようやく方針がまとまったので書いておく。

erabasicの変数は基本的に配列で、添え字を省略すると0番目を参照するようになっている。これを再現するのが非常に困る。なので、再現は諦める。

まず、erabasic由来の組込の大域変数は配列とする。添え字は省略不可。でも一文字変数とか0番目しか使わないから添え字省略して使いたいとか結構あるので、添え字を省略するための記法を導入する。

A[0] = 0
print to_str(A[0]) # => 0
print to_str($A) # => 0

$A = 1
print to_str($A) # => 1
print to_str(A[0]) # => 1

$ではじまる変数はRubyではグローバル変数として扱われる。実は定数も再代入できるのでグローバル変数みたいに使えたりするし、実際Rubieraでもそうしているけれども、グローバル変数を使うときにはプレフィックス$をつけるというのがRubyの本来の仕様。

Rubyのグローバル変数は書き換えられたときにフック処理を呼び出せるようになっている。なので、$Aに何か代入されたら、同じ値をA[0]にも代入すればいい。逆に、A[0]への代入はメソッド呼び出しなので、値を代入するときは一緒に$Aにも代入すればいい。常にお互いが同じ値を保持すれば、見かけ上同じ変数のようになる。

これで既存スクリプトの移植の目処は立った。後は頑張って移植するだけ。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

リンク

漠々ト、獏
eramaker/eramaker2の開発元の公式サイト。

Emuera - emurator of eramaker
C#で書かれたeramakerのエミュレータ「Emuera」のプロジェクトページ。

eraシリーズを語るスレ まとめ
eraシリーズ全般のまとめ。バリアント情報、改造情報など。

eratoho まとめ
eramakerのバリアント「eratoho」のまとめ。

era板
eraシリーズについての掲示板。

サブページ

Rubiera
Bitbucket上のRubieraプロジェクトページ。Rubieraのソースコードのダウンロードはここで。

管理人/副管理人のみ編集できます