= 変数
* ローカル変数
* 以下のスコープ内でのみ有効な変数。
* メソッド
* ''引数つきブロック''の引数
* 例外ハンドラへ渡された例外オブジェクト
* スコープを抜けると消失します。
* ローカル変数には、識別子として有効であれば自由に名前をつけることが可能です。
* 明示的な定義がなくても使用可能です(最初の参照時に自動定義されます)
* インスタンス変数
* 特定オブジェクトのインスタンスに所属する変数。
* class宣言内で明示的な定義が必要です。
* インスタンス変数には、識別子として有効であれば自由に名前をつけることが可能です。
* オブジェクト変数.@インスタンス変数名、として参照できます。
* クラス変数
* 特定オブジェクトの型に所属する変数。
* class宣言内で明示的な定義が必要です。
* クラス変数には、識別子として有効であれば自由に名前をつけることが可能です。
* クラス型名.@@クラス変数名、として参照できます。
* ''制約条件''
* ローカル変数には型制約、変化制約、インスタンス変数及びクラス変数には、型制約、変化制約、アクセス権限制約を付加することが可能です。
* 型制約は、変数の型を制限するための制約です。
たとえば、ある変数の型を整数(Integer)に固定したり、class C1、及びサブクラスに制限したりすることが可能となります。
* 変化制約は、変数への再代入を禁止する制約です。
* アクセス権限制約は、read(読み取り)、write(書き込み)それぞれに対し、public, protected, private を指定します。
* 表記法
* ローカル変数[[BR]]
ローカル変数は宣言をせずに使用することができます。
{{{
val = 10 # 最初の参照時に自動的に定義されます
val = a # 最初の参照時、変数にはnilが設定されます。
# 以下と同意になります。
# a = nil
# val = a
}}}
{{{
Integer = 10 # Integer は定義済みクラスの静的インスタンスのため、ローカル変数として使用できません。
}}}
''制約条件の付加''[[BR]]
''制約条件着きローカル変数は、事前に宣言する必要があります。''
{{{
val=10:int # valを数値型として宣言します。
str="mkscript":final # strを、"mkscript" という値を持つ変更不可オブジェクトとして宣言します。
}}}
{{{
val = 10
val:final # [error]最初の参照以降に、制約条件を追加変更することはできません。
}}}