有沒有辦法讓閃存as3編譯器需要靜態類型?我有一個不這樣做的壞習慣,它會很好地讓它拋出編譯器錯誤。在as3的發佈設置中,我打開了「嚴格」,但這並沒有改變任何東西。有沒有辦法讓Flash強制靜態打字?
2
A
回答
4
我有點困惑。這不會給你任何編譯時間錯誤:
function enforceType(var_a:int, var_b:String) {
trace("passed");
}
enforceType(1, 'test');
enforceType(1, 1);
enforceType('test', 1);
它確實對我來說。
編輯
由於您編輯了您的問題,我將編輯我的答案。
AS3 IS靜態類型IF您明確地鍵入您的變量。
例子:
var a:int = 0;
a = "TEST";
// a is typed as an int, therefor when you attempt to compile the above,
// you will get a compile time error
// 1067: Implicit coercion of a value of type String to an unrelated type int.
var a = 0;
a = "TEST";
// Here, a is not typed explicitly, so you can assign whatever type you want, and
// the compiler will not complain.
因此,簡而言之,AS3是靜態,如果你希望它是類型化。編譯期間無法讓編譯器知道您實際需要分配哪種類型,因爲它是靜態類型。
想象一下,例如,您可以在Foo類中定義一個非類型化的靜態變量條。
package
class Foo {
public static var bar;
}
}
現在,在你的程序中兩個不同的地方,你訪問美孚。這兩個不同的接入點基於由於用戶交互而觸發的事件,如鼠標點擊。在你的兩個事件處理您具備以下條件:
// In one handler you have
Foo.bar = 1;
// and in another handler
Foo.bar = "test";
編譯器就沒有辦法知道將首先運行,因爲它們都是基於用戶交互。所有的編譯器都可以這樣說:如果發生這種情況,它可以嗎?在這種情況下,因爲酒吧沒有輸入,所以沒關係。
如果Foo類改爲:
package
class Foo {
public static var bar:String;
}
}
編譯器會知道,上面列出的第一個事件處理程序是不行的,因爲門檻已經靜態類型是一個字符串。
長話短說(和要學的教訓):擺脫你的壞習慣並開始輸入你的變量。你會很高興你做到了。
1
我使用FlexBuilder編寫我的動作腳本。在強類型違規時,您會看到警告。除了警告在範圍內使用相同的變量名稱,未使用的導入等等。這當然與標準的AS3錯誤結合在一起。
如果沒有強大的IDE,我無法繼續。
FlexBuilder的替代方法,其中FDT和FlashDevlop的幫助方式相同。雖然他們可能沒有所有這些功能
相關問題
- 1. 在Haskell中,有沒有辦法強制強制多態呼叫?
- 2. 有沒有辦法讓Zurb Foundation靜態/無響應?
- 3. 有沒有辦法強制cin提交?
- 4. 有沒有辦法強制啓用quicktime?
- 5. git merge:有沒有辦法強制--squash?
- 6. 有沒有辦法讓@ModelAttribute動態?
- 7. 有沒有辦法讓Calendar Extender限制?
- 8. 有沒有辦法強制Apache用403代替狀態200?
- 9. 有沒有辦法*真的*強制pydev使用強制內建?
- 10. 有沒有辦法讓Google Classroom API讓學生靜音?
- 11. cx_Freeze幫助:有沒有辦法讓控制檯打開?
- 12. 有沒有辦法讓靜態方法訪問一個類的所有非靜態實例?
- 13. 有沒有辦法強制immutable.js使用字符串ID?
- 14. 有沒有辦法強制NHibernate的最小字符串長度?
- 15. 有沒有辦法從靜態方法調用非靜態方法?
- 16. 有沒有辦法找出方法是靜態的還是非靜態的?
- 17. 有沒有辦法讓[增強Tcl]類的朋友?
- 18. 有沒有辦法讓Intellij能夠強調Groovy錯誤?
- 19. 有沒有辦法讓flash [:notice]出現在flash [:error]之上或之前?
- 20. 有沒有辦法強制複製?複製沒有覆蓋提示,使用Windows?
- 21. 有沒有辦法讓MsBuild運行代碼合同的靜態合同分析?
- 22. 有沒有辦法讓PHP的子類繼承屬性(靜態和實例)?
- 23. Linux - 有沒有辦法讓一個簡單的靜態庫包含資源?
- 24. 有沒有辦法爲靜態類方法定義別名?
- 25. 有沒有辦法強制SCons覆蓋複製目錄?
- 26. 有沒有辦法在Ruby中強制實現接口方法?
- 27. 有沒有辦法強制調用重寫的方法?
- 28. Node/Express - 有沒有辦法從控制器方法訪問靜態文件?
- 29. 有沒有什麼辦法可以使強制實現的派生類中實現靜態方法?
- 30. 有沒有辦法強制一些方法的類沒有指定參數?
我認爲你的意思是靜態類型,而不是強類型。 AS3是強類型的,但靜態類型不是必需的。 – Allan 2010-12-10 01:14:12