色々、やっているうちに配列変数の型に関する自分の理解に、
中途半端な点が残っている事に気付きました。
全部オサライする積もりで、下記の様なスクリプトを作って実験しましたが、
自分の理解ではツジツマが合わない現象に出くわしています。
もう「コレはこう言うもんだ」と思うしか無いのでしょうか?
//dimについての実験1 dim suuti_test1 , 2 suuti_test1(0)=1 ;suuti(1)="10" //suuti_test1の要素に文字列を代入しようとするとエラーが出る mes "\n---------------------------------------------------\n" //dimについての実験2 dim suuti_test2 , 2 suuti_test2(0)="10" //sdimではなく、dimを使った配列変数に文字列を代入しているが //この場合エラーにはならない ;suuti_test2(1)=1 //エラーになる。 //dimで配列の宣言をしていても、最初に文字列を代入したら、 //数値は代入できない。 mes "\n---------------------------------------------------\n" //sdimについての実験1 sdim suuji_moji , , 2 suuji_moji(0)=1 ;suuji_moji(1)="10" ;この場合もここでエラーが出る。 ;sdimを宣言してあっても、数値を代入する事はできる。 ;一旦、数値を代入すると以降は文字列を代入できない mes "\n---------------------------------------------------\n" //sdimについての実験2 sdim suuji_moji , , 2 suuji_moji(0)="10" ;suuji_moji(1)=1 ;この場合もここでエラーが出る。 mes "\n---------------------------------------------------\n" //dimとsdimの違いに関する個人的なまとめ /* 標準のヘルプファイルでは、 「dim」が「配列変数を作成」で 「sdim」が「文字列型の配列変数を作成」となっているが、 本当は、どちらを使っても、両方の型の配列変数が作成できるので、 この表現は正確ではない。 「dim」と「sdim」の違いは、「デフォルト文字数」を指定できるかどうか? の1点だけで、配列変数の型を直接決定するものではない。 配列変数の型が決まるのは、初期化の時ではなく、 最初の要素を代入した時。 */ mes "\n---------------------------------------------------\n" //多次元配列の扱いについての実験 sdim tajigen_moji,,2,2 tajigen_moji(0,0)=1 ;sdimで初期化した多次元配列に数値を代入する事はできる。 ;mes tajigen_moji(0,0) ;ところが、数値が代入されたtajigen_moji(0,0)の ;中身を利用しようとすると「配列の要素が無効です」が出る /* 何だかワケがわからない。 そもそもsdimとは何なのか? 1次元の配列と、多次元配列と、どう違うのか? 代入できるのに、中身が利用できないのは何故? */