• Showing Page History #50217

Show page source of 変数 #50242

= 変数
  * ローカル変数
    * 以下のスコープ内でのみ有効な変数。
      * メソッド
      * ''引数つきブロック''の引数
      * 例外ハンドラへ渡された例外オブジェクト
    * スコープを抜けると消失します。
    * ローカル変数には、識別子として有効であれば自由に名前をつけることが可能です。
    * 明示的な定義がなくても使用可能です(最初の参照時に自動定義されます)
  * インスタンス変数
    * 特定オブジェクトのインスタンスに所属する変数。
    * 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:int              # valを数値型として宣言します。
str="mkscript":final # strを、"mkscript" という値を持つ変更不可オブジェクトとして宣言します。
f=1.0:MyClass        # [error]1.0は MyClassのインスタンスではないためエラーとなります。
}}}
{{{
val = 10
val:final # [error]最初の参照以降に、制約条件を追加変更することはできません。
}}}