【发布时间】:2010-11-18 06:08:50
【问题描述】:
在我手动实现它之前(我知道很简单),我想知道 ActionScript 或 Flex 是否支持范围?
-
你可以在 Ruby 中做到这一点:
1..101 -
您可以在 .Net 中进行操作:
Enumerable.Range(1, 10)您可以在 AS3 或 Flex 中执行此操作吗?我只是不想重新发明轮子。
【问题讨论】:
标签: apache-flex actionscript-3
在我手动实现它之前(我知道很简单),我想知道 ActionScript 或 Flex 是否支持范围?
你可以在 Ruby 中做到这一点:1..101
您可以在 .Net 中进行操作:Enumerable.Range(1, 10)
您可以在 AS3 或 Flex 中执行此操作吗?我只是不想重新发明轮子。
【问题讨论】:
标签: apache-flex actionscript-3
没有,但如果你愿意,你可以做这样的事情来模拟语法:
public class Range {
public static function get(min:int,max:int):Array {
var ret:Array = [];
while(min <= max) {
ret.push(min++);
}
return ret;
}
}
然后:
for each(var i:int in Range.get(1,10)) {
trace(i);
}
【讨论】:
我不相信它们是用来填充数组的。我检查了Array、ArrayUtil 和ArrayCollection 类。
我知道TextInput 类有一个名为restrict 的属性,您可以指定一个范围,例如0-9 或a-Z。
我还发现这个用于设置字符范围:Setting Character Range
但要填充一个数组,我认为您可能只需要自己构建一个方法。
【讨论】:
TextInput 的restrict 属性是正则表达式而不是范围。
您可以使用 Array 的 filter() 方法从原理数组中指定范围的对象填充新数组。
package
{
import flash.display.Sprite;
public class Test extends Sprite
{
private var minRangeIndex:uint;
private var maxRangeIndex:uint;
public function Test()
{
var myArray:Array = new Array("A", "B", "C", "D", "E", "F", "G", "H", "I");
minRangeIndex = 1;
maxRangeIndex = 4;
var rangeArray:Array = myArray.filter(rangeCallback);
for each (var element:Object in rangeArray)
trace(element);
}
private function rangeCallback(element:Object, index:int, array:Array):Boolean
{
return (index >= minRangeIndex && index <= maxRangeIndex);
}
}
}
//traces: B, C, D, E
使用 filter() 方法,除了任何其他类型的过滤之外,您实际上可以从主数组创建一个具有多个范围(例如:1-4 和 8-12)的数组想要的,比如用于搜索的字符串匹配。
【讨论】: