動態型別
一、可以賦任意型別的值
var dynamicvar : dynamic; dynamicvar = "hello"; dynamicvar = 123; 二、可以賦值給其他任意型別變數
var dynamicvar : dynamic; var year : int; dynamicvar = "hello"; year = dynamicvar;//會產生執行時錯誤
三、可以動態新增任意型別的變數,包括函式變數
var dynamicvar : dynamic; dynamicvar = {}; dynamicvar.id = 12; dynamicvar.name = "name";
dynamicvar.func = function (name:string) ;
dynamicvar.func("test");
四、引數化動態類:所有變數型別都必須是指定型別
var dynamicvar : dynamic; dynamicvar = {}; dynamicvar.id = "id";
dynamicvar.name = "name";
五、類實現dynamic介面:可以動態新增任意型別變數
class user implements dynamic
var u = new user();
u.name = "name";
u.newvar = 10;//動態建立的變數,訪問類裡未定義的變數時,帶變數名的resovle方法會被呼叫
六、類實現dynamic介面,並制定引數型別:可以動態新增指定型別的變數
class user implements dynamic
var u = new user();
u.name = "name";
u.newvar = "10";
七、resolve應用
class component implements dynamic
public function resolve(name : string) : string
} var c = new component();
trace(c.a);//b
八、關鍵字dynamic
載入方法前面的修復符,用於動態重新定義方法,只有部分平台支援,而且會降低效能
public dynamic function myfunction()
九、屬性
1. 用get、set方法定義
class ducktype
public function setid(id:int):int
public function new(id:int, name:string)
}
2. 唯讀、只寫
public var readonly(getprop, null) : string;
public var writeonly(null, setprop) : string;
3. 預設get、set
var prop(default, setx) : int;
var prop(getx, default) : int;
4. dynamic:動態指定get、set方法,flash平台不能使用,js平台可以使用
class c
}
var c = new c();
var my_age = 26;
reflect.setfield(c, "get_age", function() );
reflect.setfield(c, "set_age", function(a) );
trace(c.age); // 26
c.age++; // will call c.set_age(c.get_age()+1)
trace(c.age); // 27
5. null:外部無法訪問,內部可以訪問
public var readonly(getprop, null) : string;
6. never:內部和外部都無法訪問,甚至通過反射也不行
public var readonly(getprop, nerver
) : string;
7. 如果變數為動態型別,或者在untyped塊中,則無法使用屬性
var c : dynamic = new c(); trace(c.x);//為空
haXe學習筆記(二)
一 基本資料型別 1.bool enum bool 3.int 比較奇怪,int繼承於float,這樣所有用到float引數的地方都可以用int,而其他語言則會把int自動轉換為float class int extends float 4.string 有點不一樣的是string可以換行 比如 t...
C 學習筆記(五)
今天來學習一下overload 過載 它和override 重寫是有區別的。通常,自然語言中同乙個詞可以代表多種不同的含義,具體含義要依賴上下文來確定。這就是所謂的一次多義 該詞被過載 overload 了。在c 中,還有另外乙個因素會使函式名過載 建構函式。因為建構函式的名字預先由類的名字確定,所...
Qt Model View 學習筆記 五
view 類 概念 在model view架構中,view從model中獲得資料項然後顯示給使用者。資料顯示的方式不必與model提供的表示方式相同,可以與底層儲存資料項的資料結構完全不同。內容與顯式的分離是通過由qabstractitemmodel 提供的標準模型介面,由qasbstractite...