Class AS3使用字符串定位控制器类变量

Class AS3使用字符串定位控制器类变量,class,actionscript-3,actionscript,Class,Actionscript 3,Actionscript,我正在寻找一种方法来压缩我的一些AS3代码,以避免几乎重复的命令 问题是我有多个几乎同名的变量,例如法语、英语、德语、西班牙语 我的控制器类包含公共静态变量(这些变量可以跨多个类访问),我需要一种能够动态调用其中一些变量的方法。如果变量在您从中调用它们的类中,则可以执行以下操作以动态访问它们: this["spanish"+"Language"] 在AS3中,不可能编写如下内容: 控制器。这是[“西班牙语”+“语言”] 有没有办法做到这一点?尽管一切正常,但我希望能够尽可能地减少代码。可以通过

我正在寻找一种方法来压缩我的一些AS3代码,以避免几乎重复的命令

问题是我有多个几乎同名的变量,例如法语、英语、德语、西班牙语

我的控制器类包含公共静态变量(这些变量可以跨多个类访问),我需要一种能够动态调用其中一些变量的方法。如果变量在您从中调用它们的类中,则可以执行以下操作以动态访问它们:

this["spanish"+"Language"]
在AS3中,不可能编写如下内容:

控制器。这是[“西班牙语”+“语言”]


有没有办法做到这一点?尽管一切正常,但我希望能够尽可能地减少代码。

可以通过这种方式访问类的
公共静态属性(假设类名为
Controller
,如您的示例所示:

Controller['propertyName']
我不确定这对“最少的代码”有什么帮助,但这将是一个不同的主题/问题,可能需要更多关于您想要实现什么的细节

话虽如此,我喜欢DodgerThud在注释中建议的方法,将类似的值分组到一个()
Object
dictional
中,并给它一个适当的名称


请记住,如果您作为类或动态对象的键传入的字符串是从(文本)用户输入创建的,您应该对该数据的有效性进行一些检查,否则您的程序可能会崩溃或向用户公开其他字段。

通过这种方式可以访问类的
公共静态属性(假设类名为
Controller
,如示例所示:

Controller['propertyName']
我不确定这对“最少的代码”有什么帮助,但这将是一个不同的主题/问题,可能需要更多关于您想要实现什么的细节

话虽如此,我喜欢DodgerThud在注释中建议的方法,将类似的值分组到一个()
Object
dictional
中,并给它一个适当的名称


请记住,如果作为类或动态对象的键传入的字符串是从中创建的(文本)用户输入您应该对该数据的有效性进行一些检查,否则您的程序可能会崩溃或向用户公开其他字段。

对于一组继承的变量,使用Dictionary对象是有意义的:它提供了可靠的逻辑,而且恰好可以工作

我不认为这是你想要实现的。我可能错了

AS3中的类总是包装在一个
包中
——无论您是从Flash、Flex、Air还是任何其他版本编译的,都是如此

不要让Adobe迷惑你。这只是在AS3中使用基于Java的约定。不管怎样,很不幸,松散类型的语言经常被误解。因此:

this["SuperObject"]["SubObject"]["ObjectsMethod"][ObjectsMethodsVariable"](args..);
…在技术上是可靠的,因为编译器避免了点表示法,但在运行时它将收集大量不必要的数据来维护这些类型的调用

如果效率成为一个问题

使用:


将Dictionary对象用于一组继承的变量是有意义的:它提供了一个可靠的逻辑,而且它恰好工作

我不认为这是你想要实现的。我可能错了

AS3中的类总是包装在一个
包中
——无论您是从Flash、Flex、Air还是任何其他版本编译的,都是如此

不要让Adobe迷惑你。这只是在AS3中使用基于Java的约定。不管怎样,很不幸,松散类型的语言经常被误解。因此:

this["SuperObject"]["SubObject"]["ObjectsMethod"][ObjectsMethodsVariable"](args..);
…在技术上是可靠的,因为编译器避免了点表示法,但在运行时它将收集大量不必要的数据来维护这些类型的调用

如果效率成为一个问题

使用:


为什么不在你的控制器类中使用静态字典呢?你能对此进行一些扩展吗?在你的控制器中创建一个公共静态字典变量。你当前传递的字符串(“例如spanishLanguage”)将是保存您所需信息的对象的键。假设字典名为
languages
,您可以这样称呼它:
Controler.languages[“spanishLanguage”]
将尝试一下。谢谢你为什么不在你的控制器类中使用静态字典?你能对此进行一点扩展吗?在你的控制器中创建一个公共静态字典变量。你当前传递的字符串(“例如spanishLanguage”)将是保存所需信息的对象的键。假设字典名为
languages
,您可以这样称呼它:
Controler。languages[“spanishLanguage”]
会尝试一下。谢谢