【问题标题】:Actionscript 3 - passing custom class as parameter to custom class where parameter class not constructedActionscript 3 - 将自定义类作为参数传递给未构造参数类的自定义类
【发布时间】:2011-06-16 11:19:14
【问题描述】:

您好,在此先感谢您, 我有一个从我的主类构建的自定义类。在自定义类中,它有另一个作为参数传入的自定义类。我想严格输入参数变量,但是当我这样做时,'类型不是编译类型常量等'。 我理解,这是因为用作参数的自定义类尚未构建。 当我使用变量类型 ( * ) 键入参数时,这一切都有效。 我怀疑这是一个设计缺陷,因为我使用了不正确的设计模式。它实际上是手把手的代码,从不完全熟悉 oop 概念和设计模式的其他人那里收到了一个大型项目。 我已经考虑在我的主类中为参数类使用虚拟构造函数,但传入的类也需要一个自定义类(本身带有参数构造函数)。我正在考虑使用 ... (rest) 以便自定义类的参数是可选的。 还有其他方法可以控制类的构建顺序吗?其余变量会起作用吗? 谢谢

(编辑) 在 main.as 中的构造函数或其他函数中

var parameter1:customclass2;

customclass1(parameter1);

在 customclass1 构造函数中:

公共函数customclass1(参数1:customclass2) { ....

当我在参数中使用数据类型 customclass 2 时,Flash 抱怨找不到编译类型。当我使用变量数据类型 * 或省略数据类型(然后默认为 * 无论如何)时,它不会抱怨。我认为这是因为 customclass2 尚未构建,因此编译器无法使用。 或者,我没有将 customclass2 的路径添加到编译器,但我相当肯定我已经排除了这一点。 有超过 10,000 行代码,整个过程运行良好。我重写只是为了优化编译器 - 严格的数据类型,错误处理等。如果我发现继承等作为选项可用的情况,那么我会使用它,但它已经分为类(至少在主要部分)。这只是为了我自己的安心,并保持严格的数据类型策略,以便编译器优化更有效地工作。 谢谢

【问题讨论】:

  • rest 变量不起作用-rest 变量后面的参数必须是数组数据类型。
  • 我不确定我是否理解你的问题,你能发布一些代码吗?
  • 如果您发现遗留代码不遵循 oop 范式存在问题,您应该考虑重写。

标签: actionscript-3 parameters constructor


【解决方案1】:

我没有将 customclass2 的路径添加到编译器,但我相当肯定我已经排除了这一点。

所以如果你没有在任何地方编写类,编译器可以做什么?它当然会窒息。您要么必须编写 CustomClass 类文件,要么只使用“thing:Object”或“thing:Asteriks”。当您使用“*”类类型时它不会抱怨,因为它可以是任何数组、字符串、先前声明的类。但是当你指定一些不存在的东西时,它只会窒息,不管参数的声明顺序如何。

【讨论】:

  • 我的自定义类在同一个目录中。我只是说显式导入类没有任何区别。我必须道歉,自从我经常在 AS3 中编程已经 8 个多月了,我最近在 linux 中使用 GTK++。
  • 我认为问题的存在是因为编译器不知道传入的参数类,因为在声明和编译第一个类时它还没有编译它。我认为这是有道理的,因为该类稍后在其他地方按执行顺序被认为是有效类型,没有任何抱怨。我有点摸不着头脑,因为我更愿意正确键入参数,而不是将其键入为星号。
猜你喜欢
  • 1970-01-01
  • 2018-02-16
  • 2021-11-05
  • 2021-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多