[]给Dictionary添加个长度

附上AS3代码,在官方基础上的修改,希望官方能纳入到引擎中
package laya.utils {

/**
* <code>Dictionary</code> 是一个字典型的数据存取类。
*/
public class Dictionary {
private var _lenght:int = 0;
private var _values:Array = [];
private var _keys:Array = [];

/**
* 获取字典的长度。
*/
public function get lenght():int {
return _lenght;
}

/**
* 获取所有的子元素列表。
*/
public function get values():Array {
return _values;
}

/**
* 获取所有的子元素键名列表。
*/
public function get keys():Array {
return _keys;
}

/**
* 获取所有的子元素键名列表。
*/
public function get length():Array {
return _keys;
}
/**
* 给指定的键名设置值。
* @param key 键名。
* @param value 值。
*/
public function set(key:*, value:*):void {
var index:int = indexOf(key);
if (index >= 0) {
_values[index] = value;
return;
}
_keys.push(key);
_values.push(value);
++_lenght;
}

/**
* 获取指定对象的键名索引。
* @param key 键名对象。
* @return 键名索引。
*/
public function indexOf(key:Object):int {
var index:int = _keys.indexOf(key);
if (index >= 0) return index;
key = (key is String) ? Number(key) : ((key is Number) ? key.toString() : key);
return _keys.indexOf(key);
}

/**
* 返回指定键名的值。
* @param key 键名对象。
* @return 指定键名的值。
*/
public function get(key:*):* {
var index:int = indexOf(key);
return index < 0 ? null : _values[index];
}

/**
* 移除指定键名的值。
* @param key 键名对象。
* @return 是否成功移除。
*/
public function remove(key:*):Boolean {
var index:int = indexOf(key);
if (index >= 0) {
_keys.splice(index, 1);
_values.splice(index, 1);
_lenght != 0 && --_lenght;
return true;
}
return false;
}

/**
* 清除此对象的键名列表和键值列表。
*/
public function clear():void {
_values.length = 0;
_keys.length = 0;
_lenght = 0;
}
}
}
已邀请:

Aar0n

赞同来自:

感谢分享代码,这个会反馈,研究是否考虑纳入,如果纳入会在官网提名。

Aar0n

赞同来自:

统一回复一下,这个已经确认弃用。

要回复问题请先

商务合作
商务合作