• Showing Page History #50212
  • Showing Page History #50241

変数

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