SMILE BASIC 小技(6)
INC,SHIFT,UNSHIFT,PUSH,POPは文字列にも使うことができる。
VAR A$="ABC",C$ INC A$,"DEF" '文字列の最後に追加 PRINT A$ 'ABCDEF C$=SHIFT(A$) '文字列の先頭の一文字を取る PRINT C$,A$ 'A BCDEF UNSHIFT A$,"Z" '文字列の先頭に文字を付け加える PRINT A$ 'ZBCDEF PUSH A$,"G" '文字列の最後に文字を加える PRINT A$ 'ZBCDEFG C$=POP(A$) '文字列の最後の一文字を取る PRINT C$,A$ 'G ZBCDEF
DECは文字列には使えない模様。(使い方を知ってたら教えてください。)
なお、これらの命令・関数は、文字列を参照型として扱う。
参照型とは何かをここで詳しく書くことはできないが、
概ね以下のように思っていただければよい。
通常、
VAR A$="ABC"
A$=A$+"D"
のようにすると、"ABC"とあったメモリの場所とは別の場所に”ABCD"という文字列が作成され、A$はそこを指すようになる。
これが普通の文字列の動作。
しかし、上記の参照型の命令(例えばINC)の場合、"ABC"とあったメモリの位置に"D"が追加されて、結果として"ABCD"になる。
これはPRINT命令でA$を表示した結果は同じなので、まったく同じことのようだが、別の変数に参照を代入した場合に違いが出てくる。
VAR A$="ABC" VAR B$=A$ A$=A$+"D" PRINT A$ 'ABCD PRINT B$ 'ABC
VAR A$="ABC" VAR B$=A$ INC A$,"D" PRINT A$ 'ABCD PRINT B$ 'ABCD
ここで詳しく説明できないので、詳細は別項を立てる。