DOSEIの日記

技術メモ+日常ログ

load/save ステートメントのファイル名に変数を使う

load, save に指定するファイル名は、文字列型のリテラルや変数ではなくて、書かれた文字列そのものが使用される。したがって、

val = 100;
ofn = 'a';
save ofn val;

としても、“a” というファイル名ではなく、 “ofn” というファイル名になる。

このような場合は、以下のようにするとよい。

val = 100;
ofn = 'a';
eval(printf('save %s val', ofn);

実は、関数形式で書けば、ファイル名と変数名を文字列で与えるので、こんな面倒なことは不要。変数名も文字列であることに注意。