-
Notifications
You must be signed in to change notification settings - Fork 7
substitution
Silica edited this page Sep 4, 2012
·
5 revisions
#代入 ##PSLにおける変数への値の代入
i = 1;
str = "str";
空の変数に値を代入した時点で型が決定する
その後
i = str;
としてもiに"str"は格納されない(0になる)
この状態でiに"str"を代入したい場合は
i := str;
とする
PSLでは
=をsubstitution演算子
:=をassignment演算子
と呼称している
PSLの代入式は基本的に常に値をコピーする
##多重代入
a,b = 1,2;
a,b = b,a; // swap
多重代入は内部的に右項のコピーを作る
(そうしないとa = b;b = a;となってaとbは同じ値になるであろう!)
のでオブジェクトを使う場合は注意すること
###左右の数が異なる場合 基本的に多い分が無視される
a,b,c = 1,2;
であればcは元の値がそのまま維持されるし
a,b = 1,2,3;
ならば3は特に何の操作も行われない(但し上で言うコピーは行われる)
左項が一つしかない場合
a = 1,2,3;
aは1,2,3を順に要素に持つ配列になる
右項が一つしかない場合
a,b,c = 1;
の様に右項がただの値等であれば左項の一番左の要素に代入されるのみであるが
右項が配列であった場合
d = 100,200,300;
a,b,c = d;
には右項の要素が順に左項に代入される
そこで更に
d = 100,200;
a,b,c = d;
であればcの値は維持される