Nein, die Verwendung eines Arrays anstelle einer Enum ist ein schlechter Entwurf.
Beispiel: Stellen Sie sich vor, Sie haben einen String-Wert. Und die Aufgabe besteht darin, herauszufinden, ob diese Zeichenkette einem der Enum-Elementnamen entspricht/enthält (EnumToString()).
Wie würden Sie dies lösen?
Können Sie eine reale Situation nennen, in der so etwas benötigt wird? Enum sind nur Konstanten, warum wollen Sie eine Zeichenkette innerhalb der Elemente identifizieren?
Alain Verleyen: Können Sie eine reale Situation angeben, in der so etwas benötigt wird? Enum sind nur Konstanten, warum wollen Sie eine Zeichenfolge innerhalb der Elemente zu identifizieren?
enum hedge
{
AUD=0,//Australian Dollar
CAD=1,//Canadian Dollar
CHF=2,//Swiss Franc
JPY=3,//Japan Yen
EUR=4,//European Euro
};
Wenn Sie eine Absicherungsstruktur aufbauen wollen.
Aber dann vergleiche ich einfach alles, um den tatsächlichen Wert zu ermitteln.
Alain Verleyen: Können Sie eine reale Situation, wo so etwas benötigt wird? Enum sind nur Konstanten, warum wollen Sie eine Zeichenfolge innerhalb der Elemente zu identifizieren?
Meine Frage war nur ein Beispiel. Der Themenstarter hat ein anderes Beispiel beschrieben. Ich verstehe, dass sie nicht "real" genug für Sie sind und jeder kann Workarounds verwenden, aber das macht diese Aufgaben nicht nicht real für Menschen, die sie lösen.
Andrey Barinov: Meine Frage war nur ein Beispiel. Der Themenstarter hat ein anderes beschrieben. Ich verstehe, dass sie für Sie nicht "real" genug sind und jeder Workarounds verwenden kann, aber das macht diese Aufgaben nicht unrealistisch für diejenigen, die sie lösen.
Und wir stecken hier immer noch fest... Eine Lösung kann nur für ein echtes Problem gefunden werden. Kennen Sie das wirkliche Problem des OPs? Ich kenne es nicht.
Alain Verleyen: Und wir stecken hier immer noch fest... Eine Lösung kann nur für ein wirkliches Problem gefunden werden. Kennen Sie das wirkliche Problem der OP? Ich kenne es nicht.
Ich kenne VIELE reale Situationen, in denen dies hilfreich wäre. Deshalb BENUTZE ich den Ansatz mit Arrays, weil es keinen anderen Weg gibt.
Beispiel: Sie haben eine Aufzählung/Liste von etwas (sagen wir GUI-Sprachoptionen für Ihr Programm), und Sie möchten dafür Optionsfelder erstellen, aus denen der Benutzer wählen kann. Sie WOLLEN den Code der Schaltflächen später NICHT ändern, wenn Sie die Anzahl der Elemente in Ihrer Aufzählung ändern.
Und Sie müssen den Enum-Wert aus dem Namen der Schaltfläche abrufen, um ihn auf Ihr Programm anzuwenden. Sie WOLLEN NICHT für JEDES Element in Ihrer Aufzählung Code schreiben, sondern Sie wollen eine einfache Lösung innerhalb eines Zyklus
Dies kann nicht nur auf Sprachen, sondern auch auf VIELE andere Dinge angewendet werden:
Marco vd Heijden: Es gibt viele Möglichkeiten, die gleichen Dinge zu tun.
Nun, ich kenne zumindest eine, denn ich benutze sie.
Und das macht die Funktion, über die wir sprechen, nicht nutzlos. Man kann einen Nagel mit einem Stein einschlagen, aber das bedeutet nicht, dass man es immer tun sollte.
Ich kenne VIELE reale Situationen, in denen dies hilfreich wäre. Deshalb BENUTZE ich den Ansatz mit Arrays, weil es keinen anderen Weg gibt.
1. Sie haben eine Aufzählung/Liste von etwas (sagen wir GUI-Sprachoptionen für Ihr Programm), und Sie möchten dafür Optionsfelder erstellen, aus denen der Benutzer wählen kann. Sie WOLLEN den Code der Schaltflächen später NICHT ändern, wenn Sie die Anzahl der Elemente in Ihrer Aufzählung ändern.
Und Sie müssen den Enum-Wert aus dem Namen der Schaltfläche abrufen, um Ihr Programm anzuwenden. Sie WOLLEN NICHT für JEDES Element in Ihrer Aufzählung Code schreiben, sondern Sie wollen eine einfache Lösung innerhalb eines Zyklus
Dies kann nicht nur auf Sprachen, sondern auch auf VIELE andere Dinge angewendet werden:
Ich weiß, Andrey. Ihr Beispiel braucht eine dynamische Lösung, also verwenden Sie nicht enum, sondern array. Wenn Sie enum (statisch) für etwas verwenden wollen, das dynamisch ist (Ihr Beispiel), ist das ein schlechtes Design. Es scheint mir, dass wir dasselbe sagen.
Wir können dem OP nicht weiterhelfen, da er nicht sagt, warum er eigentlich eine Schleife braucht.
Nun, ich kenne zumindest eine, denn ich benutze sie.
Und das macht die Funktion, über die wir sprechen, nicht nutzlos. Man kann einen Nagel mit einem Stein einschlagen, aber das bedeutet nicht, dass man es immer tun sollte.
Sogar Java hatte lange Zeit keinen Enum-Typ, und da Java selten reine Arrays verwendet, gab es viele andere OO-Wege, um eine Liste von Werten zu iterieren. Ich würde es nicht als einen Stein und einen Nagel bezeichnen.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Nein, die Verwendung eines Arrays anstelle einer Enum ist ein schlechter Entwurf.
Beispiel: Stellen Sie sich vor, Sie haben einen String-Wert. Und die Aufgabe besteht darin, herauszufinden, ob diese Zeichenkette einem der Enum-Elementnamen entspricht/enthält (EnumToString()).
Wie würden Sie dies lösen?
Können Sie eine reale Situation angeben, in der so etwas benötigt wird? Enum sind nur Konstanten, warum wollen Sie eine Zeichenfolge innerhalb der Elemente zu identifizieren?
Wenn Sie eine Absicherungsstruktur aufbauen wollen.
Aber dann vergleiche ich einfach alles, um den tatsächlichen Wert zu ermitteln.
Können Sie eine reale Situation, wo so etwas benötigt wird? Enum sind nur Konstanten, warum wollen Sie eine Zeichenfolge innerhalb der Elemente zu identifizieren?
Meine Frage war nur ein Beispiel. Der Themenstarter hat ein anderes beschrieben. Ich verstehe, dass sie für Sie nicht "real" genug sind und jeder Workarounds verwenden kann, aber das macht diese Aufgaben nicht unrealistisch für diejenigen, die sie lösen.
Und wir stecken hier immer noch fest... Eine Lösung kann nur für ein wirkliches Problem gefunden werden. Kennen Sie das wirkliche Problem der OP? Ich kenne es nicht.
Ich kenne VIELE reale Situationen, in denen dies hilfreich wäre. Deshalb BENUTZE ich den Ansatz mit Arrays, weil es keinen anderen Weg gibt.
Beispiel: Sie haben eine Aufzählung/Liste von etwas (sagen wir GUI-Sprachoptionen für Ihr Programm), und Sie möchten dafür Optionsfelder erstellen, aus denen der Benutzer wählen kann. Sie WOLLEN den Code der Schaltflächen später NICHT ändern, wenn Sie die Anzahl der Elemente in Ihrer Aufzählung ändern.
Und Sie müssen den Enum-Wert aus dem Namen der Schaltfläche abrufen, um ihn auf Ihr Programm anzuwenden. Sie WOLLEN NICHT für JEDES Element in Ihrer Aufzählung Code schreiben, sondern Sie wollen eine einfache Lösung innerhalb eines Zyklus
Dies kann nicht nur auf Sprachen, sondern auch auf VIELE andere Dinge angewendet werden:
Es gibt viele Möglichkeiten, die gleichen Dinge zu tun.
Nun, ich kenne zumindest eine, denn ich benutze sie.
Und das macht die Funktion, über die wir sprechen, nicht nutzlos. Man kann einen Nagel mit einem Stein einschlagen, aber das bedeutet nicht, dass man es immer tun sollte.
Ich kenne VIELE reale Situationen, in denen dies hilfreich wäre. Deshalb BENUTZE ich den Ansatz mit Arrays, weil es keinen anderen Weg gibt.
1. Sie haben eine Aufzählung/Liste von etwas (sagen wir GUI-Sprachoptionen für Ihr Programm), und Sie möchten dafür Optionsfelder erstellen, aus denen der Benutzer wählen kann. Sie WOLLEN den Code der Schaltflächen später NICHT ändern, wenn Sie die Anzahl der Elemente in Ihrer Aufzählung ändern.
Und Sie müssen den Enum-Wert aus dem Namen der Schaltfläche abrufen, um Ihr Programm anzuwenden. Sie WOLLEN NICHT für JEDES Element in Ihrer Aufzählung Code schreiben, sondern Sie wollen eine einfache Lösung innerhalb eines Zyklus
Dies kann nicht nur auf Sprachen, sondern auch auf VIELE andere Dinge angewendet werden:
Ich weiß, Andrey. Ihr Beispiel braucht eine dynamische Lösung, also verwenden Sie nicht enum, sondern array. Wenn Sie enum (statisch) für etwas verwenden wollen, das dynamisch ist (Ihr Beispiel), ist das ein schlechtes Design. Es scheint mir, dass wir dasselbe sagen.
Wir können dem OP nicht weiterhelfen, da er nicht sagt, warum er eigentlich eine Schleife braucht.
Nun, ich kenne zumindest eine, denn ich benutze sie.
Und das macht die Funktion, über die wir sprechen, nicht nutzlos. Man kann einen Nagel mit einem Stein einschlagen, aber das bedeutet nicht, dass man es immer tun sollte.
Sogar Java hatte lange Zeit keinen Enum-Typ, und da Java selten reine Arrays verwendet, gab es viele andere OO-Wege, um eine Liste von Werten zu iterieren. Ich würde es nicht als einen Stein und einen Nagel bezeichnen.