Haxe數據類型

如下是Haxe裏面的一些數據類型html

  1. 基本類型
  2. 空特性
  3. 枚舉
  4. 匿名結構
  5. 方法
  6. 動態
  7. 抽象

1. 基本類型
Bool, Float, Intide

2. 空特性
因爲Haxe能夠被編譯爲各類不一樣的target,不一樣語言對於給基本類型賦"null"值的做法都不一樣。動態語言能夠給基本類型賦null,可是靜態語言不能夠。爲了處理這些不一樣,在給基本類型賦"null"值時,在haxe裏就須要作一些特殊處理,用"Null<T>"修飾類型函數

var nullValue : Null<Int> = null;

3. 類this

class Point {
  var x : Int;
  var y : Int;
  public function new(x,y) {
    this.x = x;
    this.y = y;
  }
  public function toString() {
    return "Point("+x+","+y+")";
  }
}

  - new方法是構造函數
  - 其餘地方和別的語言沒大區別spa

3.1 繼承
  使用extends來繼承
  子類的構造函數不是必須的,但若是要建立本身的構造函數,則必須先調用super()
  若子類要覆寫父類的方法,則必須使用override關鍵字code

3.2 接口
  關鍵字:interface
  接口內方法不須要實現
  接口內的全部方法及屬性都必須明確類型
  - 若一個類同時繼承多個接口,每一個接口都以implements開頭htm

4. 枚舉類型blog

enum Color {
  Red;
  Green;
  Blue;
  Rgb(r:Int, g:Int, b:Int);
}

  Red, Green, Blue, Rgb(r:Int, g:Int, b:Int)這些都是這個枚舉類型(Color)的構造器。
  Haxe裏有一個特殊類型——"EnumValue",全部的枚舉實例都能賦值給這種類型的變量繼承

var ec:EnumValue = Red;

5. 匿名結構
用於一堆數據的集合接口

var user = {
  name : "Nicolas",
    age : 32,
    pos : [
      { x : 0, y : 0 },
        { x : 1, y : -1 }
  ],
};

6. 方法

static function test(i:Int, s:String):Bool {
    return true;
}

6.1 可選參數
在參數前加"?",表明此參數爲可選參數

static function test(?i:Int, ?s:String):Bool

6.2 給參數賦默認值
使用=號

static function test(i = 12, s = "bar") {
    return "i: " +i + ", s: " +s;
}

7. 動態
若是一個Class實現動態接口,那麼這個class會有一個特殊的方法:resolve。當在main裏頭訪問一個不存在的屬性或方法時,系統會自動調用該方法,並把嘗試訪問的屬性名或方法名看成參數傳進resolve方法裏。

class Resolve implements Dynamic<String> {
  public var present:Int;
  public function new() {}
  function resolve(field:String) {
    return "Tried to resolve " +field;
  }
}

class Main {
  static public function main() {
    var c = new Resolve();
    c.present = 2;
    trace(c.present);
    trace(c.resolveMe);
  }
}

8. 抽象(看不懂,之後補充:http://haxe.org/manual/types-abstract.html)

abstract AbstractInt(Int) {
  inline public function new(i:Int) {
    this = i;
  }
}
相關文章
相關標籤/搜索