Top > Shiba > Shiba Language > 宣言

宣言 Edit

変数 Edit

Everything is expanded.Everything is shortened.
  1
  2
  3
 
 
 
int x1; // デフォルト値で初期化される
int x2 = 1; // 1で初期化される
int x3 = void; // 初期化処理は特にされない

定数 - immutable Edit

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 
 
 
 
-
|
|
|
!
 
immutable int ONE = 1;
immutable float TWO = 2.0f;
 
pod Vector3
{
    float x;
    float y;
    float z;
};
immutable Vector3 BASIS_Z = {0,0,1};

変数の属性 - const,ref,in,readonly Edit

const

  • const属性のメンバ関数しか呼ぶことができない。(変数を変更することができない)
    Everything is expanded.Everything is shortened.
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
    
     
    -
    |
    |
    |
    |
    -
    |
    |
    |
    !
    !
     
    
    pod Hoge
    {
      public int a()const { return 1; }
      public int b() { return 2; }
     
      static void test()
      {
        const Hoge hoge;
        hoge.a(); // OK
        hoge.b(); // const関数ではないので呼ぶことができない。
      }
    };
    

ref

  • 参照型。Cでいうポインタ。
  • 参照は保持することはできない。
  • 関数の引数および戻り値でのみ使用可能。
  • 戻り値に使う場合,関数ローカルの変数を戻り値として使うことはできない。
    Everything is expanded.Everything is shortened.
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
    
     
    -
    |
    -
    |
    !
    |
    |
    -
    |
    |
    !
    !
     
    
    pod Hoge
    {
      static public void a( ref int b ) 
      {
        b = 2;
      }
     
      static void test()
      {
        int hoge = 0;
        Hoge.a( hoge ); // hogeは2が入る。
      }
    };
    

in

  • 関数の引数でのみ使用可能。
  • RealTypeならconst,それ以外ならconst refのエイリアス。
  • const,refと併用はできない。

readonly

  • C#のものと同じ。
  • コンストラクタでしか変更・代入ができないメンバ変数につける属性。
Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 
-
|
|
!
 
 
-
|
|
-
|
|
|
!
|
|
-
|
|
|
|
|
!
|
|
|
|
|
!
 
class Vector2
{
  float x;
  float y;
};
 
class Hoge
{
public:
  this()
  {
    mInt = 2; // コンストラクタからは変更可能
    @mVec2 = new Vector2();
    @mConstVec2 = new Vector2();
  }
 
  void example()
  {
    mInt = 3; // エラー:コンストラクタではないところから変更できない
    @mVec2 = new Vector2(); // エラー
    mVec2.x = 2; // OK
    mConstVec2.x = 2; // エラー
    mVec2.x = mConstVec2.x; // OK
  }
 
private:
  readonly int mA;
  readonly Vector2@ mVec2;
  readonly const Vector2@ mConstVec2;
};

ver2以降 Edit

固定長配列 Edit

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
 
 
 
 
 
int[3] x1; // 全てデフォルト値で初期化される
int[3] x2 = {0,1,2}; // 0,1,2で初期化される
int[3] x3 = {0,1}; // コンパイルエラー(初期化子が不足)
int[2][2] x4; // 二次元配列 全てデフォルト値で初期化される
int[2][2] x5 = { {0,1} , {2,3} };

型推論 - auto Edit

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
 
-
|
!
 
 
 
class Hoge
{
  void func(){}
}
 
auto a = new Hoge(); // aはHogeと推論される
a.func();

可変長配列 Edit

  • 可変長配列はArrayテンプレートによって生成されるclass。
Everything is expanded.Everything is shortened.
  1
  2
 
 
int[] x1; // Std.Array!( int ) x1; と同じ。何も指定されなければnullになる。
int[] x2 = new int[5]; // 5の長さの配列を作成

連想配列 Edit

  • 連想配列はHashtableテンプレートによって生成されるclass。
Everything is expanded.Everything is shortened.
  1
  2
 
 
// keyがchar型,valueがintのHashtable
int[ char ] x; // Std.Hashtable!( char , int ) x; と同じ

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes
Last-modified: (4402d)