※ 引述《etrexetrex (moonet)》之銘言:
: dynamic class 的好處就是可以動態加入成員
: 那他有什麼缺點呢?
: 應該會比較慢吧?
: 不曉得有沒有dynamic class 和非 dynamic class 的比較
: 我現在想要寫一個class
: 如果用 dynamic class 的話就可以寫出很短的code
: 如果不用的話就會很長
: 現在正在猶豫中
我是覺得dynamic class的效率
除了dynamic variable以外,一切都跟non-dynamic class一樣
dynamic variable說穿了
只是一個被包裝起來的Dictionary (hash map)而已
所以以下code理論上執行效能是一樣的
這是一個non-dynamic class
class MyClass1 {
public var dictionary:Dictionary = new Dictionary();
}
還有一個dynamic class
dynamic class MyClass2 {
}
這是主程式,兩個片段執行效能應該是差不多的
//片段1
var obj1:MyClass1 = new MyClass1();
obj1.dictionar["myVar"] = 10;
//片段2
var obj2:MyClass2 = new MyClass2();
obj2.myVar = 10;
我個人建議是想要用dynamic class
不如在non-dynamic class上宣告一個Dictionary
因為dynamic class沒有compile-time變數檢察的優勢
一切的變數都是run-time才動態存取的
像是Stardust的Particle class
就是一個包含Dictionary的non-dynamic class的例子
http://bit.ly/duhWSK
請見第82行
其目的是讓某些自訂的Initializer或Action在它身上安插自訂變數
然後此class又定義一些其他一定會用到的property
如此一來,compile-time檢察不出來的變數錯誤
就僅侷限於會用到Dictinoary的程式碼片段
--
CJ Cat = Croa'J Cat = Cockroach Cat = 西街凱特 = 蜚蠊貓 = 蟑螂貓
Blog http://cjcat.blogspot.com
Gallery http://cjcat2266.deviantart.com
ptt2 Board CJWorkshop - 阿多比閃光(Adobe Flash)研討區
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.4.181