我在使用Haxe的Flash中重載函數時遇到一些問題。我知道Flash不允許重載,但可以接受沒有聲明類型的函數參數,但我不確定如何在Haxe中複製這個技巧。Haxe中的Flash函數重載
編輯:由於這似乎不可能,有沒有任何已知的技巧可以用來解決這個限制?
我在使用Haxe的Flash中重載函數時遇到一些問題。我知道Flash不允許重載,但可以接受沒有聲明類型的函數參數,但我不確定如何在Haxe中複製這個技巧。Haxe中的Flash函數重載
編輯:由於這似乎不可能,有沒有任何已知的技巧可以用來解決這個限制?
的HAXE網站對如何在這裏實現這樣一個例子:http://old.haxe.org/ref/optional_args
我不認爲haXe的支持真正的方法重載...不知道,但。祝你好運!
有最近關於這對HAXE郵件列表的討論:http://lists.motion-twin.com/pipermail/haxe/2010-May/035650.html
最相關的帖子是由HAXE的作者:http://lists.motion-twin.com/pipermail/haxe/2010-May/035659.html
的文藝青年最愛的版本,是因爲Flash 9不支持他們刪除了爲所有平臺執行此操作的能力。
這些帖子與問題的內容並不完全相關。這些帖子討論了子類中的方法用不同的方法簽名覆蓋超類方法。 – davr 2010-05-11 01:28:48
如果我正確地閱讀你的問題,你可以使用類似於在AS3中完成的技巧。如果聲明函數使用Dynamic參數,則可以根據傳遞的參數的運行時類型來執行不同的操作。例如
public function bar(param1:Dynamic, param2:Dynamic):Dynamic
{
if(Std.is(param1, Float) && Std.is(param2, Float))
doStuffWithFloats(param1, param2);
else if(Std.is(param1, String) && Std.is(param2, String))
doStuffWithStrings(param1, param2);
}
什麼*確切*你想完成?你提到方法重載和類型推斷,但是你不清楚你想要做什麼。提供一些僞代碼會有幫助... – heavilyinvolved 2010-05-11 20:11:28