-
Notifications
You must be signed in to change notification settings - Fork 7
Type
#Type (型)
##PSL Type
型名は全て言語的に既定された物ではないことに注意すること(後述)
###int
32bit signed integer
###hex
logical shift
###float
floating point number
###string
text string
###ref
reference
###thread
Coroutine
###object
明示的に型を宣言せずに変数を使用した場合、それらは全てobject型として扱われる
空のobjectに対して値が代入された場合、
値は型ごとコピーされて空のobjectを持っていた変数に代入されることになる
object型はindexでアクセスしたりメンバを持つことが出来る
関数、クラス、クラスのインスタンスは全てobject型である
##declaration
[local/global/static] [type] name;
スコープ指定を省略した場合はlocal変数として扱われる
型名を省略した場合、空のobject型として変数は作成される
型名を指定した場合、それがクラスであればクラス内の、メンバをコピー、関数をメソッドとして登録し
クラス自身のコードをコンストラクタとして実行する
コンストラクタ内でのスコープ指定のない変数の宣言はインスタンスへのメンバの登録として行われる
型名として与えられた変数がクラスでは無い場合、
単にその値のコピーとして変数は作成される
このことから分かる様にint型とは単に値0を持つglobal変数intに過ぎない
その為上書きすることや、同じ名前のローカル変数を作成する事が可能である
PSLはバーチャルマシン構築時に幾つかのglobal変数を自動的に登録する
##operation
演算時の型は左項に従う
a = 1;
b = "2str";
c = a + b; // 3
d = b + a; // 2str1