如何在MQL4/MQL5中获得枚举和项目的长度? - 页 3

 
Andrey Barinov:

不,使用数组而不是枚举是一个糟糕的设计。

举个例子。想象一下,你有一个字符串值。任务是找出这个字符串是否等于/包含其中的一个枚举项的名称(EnumToString())。

你将如何解决这个问题?

你能提供一个需要这样做的真实情况吗?枚举只是常量,你为什么要在这些项目中识别一个字符串?
 
Alain Verleyen:
你能提供一个需要这种东西的真实情况吗?Enum只是常量,你为什么要在这些项目中识别一个字符串?
 enum hedge
  {
   AUD=0,//Australian Dollar
   CAD=1,//Canadian Dollar
   CHF=2,//Swiss Franc
   JPY=3,//Japan Yen
   EUR=4,//European Euro
  };

如果你想建立起一个对冲结构。

但是,我只是简单地比较一下,发现实际价值。

sinput hedge C1=2;// Hedge Currency 

if(C1=="CAD")
 {
  //Do Something
 }
 
Alain Verleyen:
你能提供一个需要这种东西的真实情况吗?Enum只是常量,为什么你要在项目中识别一个字符串?
我的问题只是一个例子。话题启动者描述了另一个例子。我明白这些问题对你来说不够 "真实",每个人都可以使用变通方法,但这并不意味着这些任务对正在解决这些问题的人来说不真实。
 
Andrey Barinov:
我的问题只是一个例子。话题启动者描述了另一个例子。我明白这些问题对你来说不够 "真实",每个人都可以使用变通的方法,但这并不意味着这些任务对正在解决它们的人来说不真实。
而我们仍然被困在这里...只有在真正的问题上才能找到解决方案。你知道OP的真正问题是什么吗?我不知道。
 
我也没有。我已经问过他好几次了。
 
Alain Verleyen:
而我们仍然被困在这里...只有在真正的问题上才能找到解决方案。你是否知道这个问题的实质?我不知道。

我知道在许多真实的情况下,这将是有帮助的。这就是为什么我使用数组的方法,因为没有其他方法。

例子。你有一个东西的枚举/列表(比方说你程序的GUI语言选项),你想为它建立单选按钮,供用户选择。如果你改变了枚举中的项目数量,你不希望以后再改变按钮的代码。

你需要从按钮的名称中获取枚举值来应用于你的程序。你不希望为枚举中的每一项写代码,你希望在一个周期内有一个简单的解决方案。

这不仅可以应用于语言,还可以应用于许多其他事物。

 
有很多方法可以做同样的事情。
 
Marco vd Heijden:
有很多方法可以做同样的事情。

嗯,我至少知道一个,因为我正在使用它。

而这并不意味着我们所讨论的功能是无用的。你可以用石头敲打钉子,但这并不意味着你应该总是这样做。

 
Andrey Barinov:

我知道在许多真实的情况下,这将是有帮助的。这就是为什么我使用数组的方法,因为没有其他方法。

1.你有一个枚举/列表的东西(比方说你的程序的GUI语言选项),你想为它建立单选按钮,供用户选择。如果你改变了枚举中的项目数量,你不希望以后再改变按钮的代码。

你需要从按钮的名称中获取该枚举值来应用你的程序。你不希望为枚举中的每一项写代码,你希望在一个周期内有一个简单的解决方案。

这不仅可以应用于语言,还可以应用于许多其他事物。

我知道Andrey。你的例子需要一个动态的解决方案,所以你不使用枚举而使用数组。如果你想用枚举(静态)来处理动态的东西(你的例子),这是一个糟糕的设计。在我看来,我们说的是一样的。

我们无法帮助OP,因为他没有说他为什么需要循环。

 
Andrey Barinov:

嗯,我至少知道一个,因为我正在使用它。

而这并不意味着我们所讨论的功能是无用的。你可以用石头敲打钉子,但这并不意味着你应该总是这样做。

甚至Java语言在很长时间内都没有任何枚举类型,而且由于Java很少使用纯数组,有许多其他的OO方式来迭代一个值的列表。我不会说这是石头和钉子。