2012-01-24 184 views
1

考慮以下功能:如何將數據類型映射到自定義類型?

public function foo(bar1:int, bar2:uint, bar3:String, bar4:Boolean):void{} 

我想是有不同類型的自定義命名的類型,其基本上代表原始數據類型表示的數據。換句話說,我想代理的數據類型,並有一個有效的功能如下:

public function foo(bar1:PAR_Bar1, bar2:PAR_Bar2, bar3:PAR_Bar3, bar4:PAR_Bar4):void{} 

所以PAR_Bar1將代理int數據類型,PAR_Bar2將代理uint數據類型,等等等等。

我需要這個的原因是因爲我正在使用一個帶有GUI的調試器,它可以運行方法並允許實時更改函數參數值,問題是調試器不能告訴我什麼參數, m改變,它只顯示參數的數據類型。所以如果我需要改變10個不同的參數,所有類型爲int,調試器將它們全部顯示爲int而不是它們的名稱。

我認爲,如果我使用代理類型,我可以很容易地區分參數。

所以,我的問題:是否可以代理數據類型?我的意思是將特定的數據類型映射到代表基本數據類型的自定義數據類型?

編輯:我使用的是Monster Debugger,這是一個叫做實時方法的窗口: enter image description here

正如你所看到的,我沒有得到的參數的名稱,但它們的類型(INT)。

+0

這聽起來像一個非常可怕的調試器,你在用什麼? – grapefrukt

+0

我已更新該帖子以獲取有關調試器的更多詳細信息。 – IneedHelp

回答

0

似乎沒有別名類型的方法。

0

我會建議你改變了你的調試器,但由於這是一個正確的問題... 您可以創建一個類,就像任何常數:

const PAR_Bar1:Class = uint; 

讓我們期待您的調試器將識別這個類,而不是它的母親。

+0

感謝您的回覆!我試過你告訴我的,如果我在主類之外創建常量,我得到這個錯誤:「5006:一個ActionScript文件不能有多個外部可見的定義」,如果我在主類中聲明它,我得到這個錯誤:「1046:Type找不到或者不是一個編譯時常量:PAR_Bar1。」 – IneedHelp

0

不完全確定你打算如何使用它,但你有沒有考慮過使用無類型變量定義?

public function foo(bar1:*, bar2:*, bar3:*, bar4:*):void{} 

然後用這個來獲得變量的類?

var PAR_Bar1:Class = Object(bar1).constructor; 

編輯︰啊忽略這一個,重新讀你的問題,並意識到這不會幫助你。

+0

是的,我認爲我想要的(別名類型)甚至不可能。 – IneedHelp

相關問題