flex 是否允许数组集合中的键为空或缺失?
在 Flex 中,Array 或 ArrayCollection 不使用键。数组本质上是基于索引的。您可以在数组中有一个为 null 或其他“非活动”值的项目吗?是的,我不明白为什么不。
如果您想通过键访问元素,则应使用通用Object或Dictionary。但是,如果这样做,您将丢失数组提供的任何排序。您的代码可能会像这样重写以使用字典:
var myAC:Dictionary= new Dictionary();
myAC["0"] = "hi";
myAC["4"] = "hola";
myAC["17"] = "bye";
myAC["32"] = "adios";
return myAC[sID];
在评论中提到,上面的代码将 b/c 字典的键不能使用数字。但是,这是一个完整的示例,证明情况并非如此:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="application1_creationCompleteHandler(event)">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
public var dict : Dictionary;
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
dict = new Dictionary();
dict["0"] = "hi";
dict["4"] = "hola";
dict["17"] = "bye";
dict["32"] = "adios";
trace(dict["0"]);
trace(dict["4"]);
trace(dict["17"]);
trace(dict["32"]);
var obj : Object = new Object();
obj["0"] = "hi";
obj["4"] = "hola";
obj["17"] = "bye";
obj["32"] = "adios";
trace(obj["0"]);
trace(obj["4"]);
trace(obj["17"]);
trace(obj["32"]);
}
]]>
</fx:Script>
</s:Application>
如果您运行示例 ind 调试模式,您可以看到已设置并跟踪字典值。