2010-01-31 55 views
3

返回類型,我看到在行動腳本的方法是有*是什麼*在AS3

public function f(s:String):* 

是什麼[*]表示返回類型?

回答

7

*符號表示「無類型」,表示該類型可以是任何內容(並且該值可以是undefined)。使用星號與完全不指定類型具有相同的效果,但使用它可以很好地表達您的意圖。有關更多信息,請參閱language reference

8

該答案不是100%正確的。沒有「無類型」,並且*和Object之間只有很小的差異,因爲可以爭辯說Object也意味着無類型,因爲每種類型都從Object延伸。 但是*暗示未定義的值和對象不是。一個很大的區別!這對於動態語言很有用,因爲這意味着Object的屬性可以是未定義的,與定義的和null不同。

因此,例如,y在{x:null}中未定義,並且x被定義但沒有值。你可以利用的是:

var yesNoMaybe: *; 

yesNoMaybe = true; 
yesNoMaybe = false; 
yesNoMaybe = undefined; 
+0

的「類型化」確實存在的概念;語言引用在'*'特殊類型描述的第一句中使用該術語:「指定屬性是無類型的。」。 – hasseg 2010-02-01 18:35:08

+0

你應該再讀一遍我的回覆。你作爲「var x:Object = 1; var y:* = 1; var z = 1」之間的程序員有什麼區別?在每種類型都從對象類型擴展並且在運行時沒有特定類型的意義上,所有這些都是「無類型的」。但是y和z可以是未定義的。這是一個很大的差異,也在速度方面!很多人認爲把「*」換成無類型的東西是很好的,但是用Object更好。 – 2010-02-02 10:31:34

+1

您在這裏的最佳實踐建議中完全沒有錯。我的意圖僅僅是澄清「無類型」這個詞的意思;以與語言參考中使用的定義不一致的方式使用它可能會造成混淆。 – hasseg 2010-02-02 15:57:37