【发布时间】:2012-12-26 15:17:34
【问题描述】:
我从事 AS3 项目已经有一段时间了,我认为我遇到了困难。我的项目需要将一系列元素排列在一个循环列表中,所以我将自己复制到一个Circular List 中,我之前在 C# 中做过。
问题是,一个严重依赖于 Generics 的使用。现在我没有这些。
这里是代码。 T 变量类型代表我希望存在的泛型。
Node.as:
包裹 { 公共类节点 { 变量节点内容:T; 变量下一个节点:节点; 功能节点(节点元素:T) { this.nodeContent = nodeElement; } } }CircularList.as:
package
{
public class CircularList
{
var head:Node;
var tail:Node;
var listLength:int;
function CircularList()
{
this.head = null;
this.tail = null;
this.listLength = 0;
}
function Add(addition:T)
{
adding:Node = new Node(addition);
if(this.head == null)
{
this.head = adding;
this.tail = adding;
head.nextNode = tail;
tail.nextNode = head;
}
else
{
tail.nextNode = adding;
tail = adding;
tail.nextNode = head;
}
listLength++;
}
function Find(requested:T):Node
{
var finder:Node = null;
var searching = head;
var i:int;
while(i <= listLength)
{
if(searching.nodeContent == requested)
{
finder = searching;
}
searching = searchig.nextNode;
i++;
}
return finder;
}
}
}
有没有办法让这个东西在没有泛型的情况下工作?
编辑:真正的问题是我希望 Node 类中的 NodeContent 是一个对象。基本上,我想列出坐在圆桌上的人,但我想要一个可以重复使用的代码,而不是专门为这个问题制作的代码
【问题讨论】:
-
根据我对泛型的快速阅读,ActionScript 中没有与 c# 泛型等效的东西。但是,如果将 T 替换为 *,则应该没问题(至少就提供的代码而言)。 * 是“任何类类型”的简写
-
您是否希望将类类型传递给 Node 或实例化对象?
-
我希望 NodeContent 成为一个对象。这就是问题所在......我认为否则它可以与 *(这是我在询问之前尝试过的,但是是的,需要在那里获得一个对象)
-
你也试过用 * 替换 Node 吗?例如:var head:*;
-
其他选项是使用接口。为可以是节点的类定义一个是否实用?
标签: actionscript-3 list generics nodes circular-list