是什么*在AS3

问题描述:

返回类型,我看到在行动脚本的方法是有*是什么*在AS3

public function f(s:String):* 

是什么[*]表示返回类型?

*符号表示“无类型”,表示该类型可以是任何内容(并且该值可以是undefined)。使用星号与完全不指定类型具有相同的效果,但使用它可以很好地表达您的意图。有关更多信息,请参阅language reference

该答案不是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