Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ein Makro und eine Inline-Funktion sind in der Tat unterschiedliche Dinge. Aber das ist nicht das, was ich meine. Hier ein Beispiel, bei dem die Werte der Argumente zur Kompilierzeit unbekannt sind
Im ersten Fall muss der Code in die aktuelle Funktion eingefügt werden (nehme ich an) und im zweiten Fall wird die Funktion mit Parametern aufgerufen , die über den Stack übergeben werden (nehme ich an). Zu Optimierungszwecken kann der Compiler jedoch auch die zweite Variante durch Substitution implementieren. Ist das so? Ich weiß es nicht. Deshalb habe ich gefragt.
Das Ellipsenobjekt wird nur mit der Maus hervorgehoben, wenn Sie auf die Ankerpunkte klicken.
Ist es ein Fehler oder eine Funktion? Sie ist sehr umständlich umgesetzt.
Это что, юмор такой чёрный?
1. Извини, - бред. Я понимаю, тут паранойя в моде, и является ломовым аргументом за "почему так не надо делать". Никакой опасности не вижу в упор. Смотрел внимательно, если чё. Любое имя, в конечном счёте есть ссылка. Индексация есть обычное расширение понятия имени. Не более. Давай запретим присваивание вообще. В целях безопасности. Ссылки же крайне опасны так?
2. Духу объектно-ориентированного программирования, при такой логике, яростно противоречат С++, С#, Делфи, пара дюжин менее популярных языков, в которых индексаторы совершенно нормально работают и справа и слева. Причём здравому смыслу и моему духу это почему-то не противоречит.
Индексаторы делаются для связи с внешней средой. Их функция именно интерфейсная. Я могу инкапсулировать и прятать что угодно, но индексы мне нужны для оперирования объектами как массивами. Фактически все массивы как-то устроены. Например обычные динамические массивы mql. Может запретим их слева от оператора присваивания ставить? Заменим функцией какой-нибудь типа SetArrayValue(array, i, j, value); Заодно и в читабельности выиграем. Да и отладка станет куда проще. Мля. Уф..
3. А как насчёт того, чтоб сделать нормальный индексатор? Горничная это конечно классно, но королева всё-таки лучше.
4. Вот в этом месте у меня крыша конкретно начала ехать. Это что, нечитабельно??
Вот это читабельнее, да?
t.setDataElement(i, i*i);
Круто. Пожалуй пойду лечиться.
5. Ваще круто.
6. Я плакаль.
e(array, i, j, value); Dies wird auch die Lesbarkeit verbessern. Und die Fehlersuche wird auch viel einfacher. Scheiße. Igitt...
Nun, ein Setzer hat den Vorteil, dass man etwas mehr tun kann als eine einfache Gleichung.
Sie können beispielsweise Informationen protokollieren, Daten konvertieren (wenn es sich um Zeichenketten oder komplexere Daten handelt), Nachrichten an andere Objekte senden, wenn etwas Wichtiges passiert (z. B. Daten aktualisieren).
Wie erfährt Ihr Objekt, wenn sich das Datum geändert hat? Anscheinend werden Sie Zitate speichern...
Oh ja, das ist ein falsches Problem, denn Ihr Objekt ist eher wie eine Struktur und verwaltet nicht wirklich etwas.
Alles wird in einer anderen Müllklasse erledigt, die alles handhabt, oder noch schlimmer, alles passiert in onStart(), onTick(), ... ! :)
Ich wünsche Ihnen einen schönen Tag
3. wie wäre es, einen normalen Indexer zu machen? maid ist cool, aber queen ist besser.
Muti-Dichtung. Im Vergleich zu einem normalen l-Wert ist dies jedoch sehr viel zeitaufwändiger. Aber es wird genau so aussehen, wie Sie es brauchen.
______
Ach, verdammt, nein. Dann brauchen Sie eine Überladung des Typs ghost operator. Schade.
Nun, der Vorteil des Setzers ist, dass man etwas mehr als eine einfache Gleichung machen kann.
Sie können zum Beispiel Informationen protokollieren, Daten konvertieren (wenn es sich um Strings oder komplexere Daten handelt), Nachrichten an andere Objekte senden, wenn etwas Wichtiges passiert (z. B. Daten aktualisieren).
Wie erfährt Ihr Objekt, wenn sich das Datum geändert hat? Anscheinend werden Sie Zitate speichern...
Oh ja, das ist ein falsches Problem, denn Ihr Objekt ist eher eine Struktur und steuert nicht wirklich etwas.
Alles wird in einer anderen Müllklasse erledigt, die alles handhabt, oder noch schlimmer, alles passiert in onStart(), onTick(), ... ! :)
Ich wünsche Ihnen einen schönen Tag
Der Punkt ist, dass der Indexer in Bezug auf die Funktionen dem Setter entspricht . Sie ist genauso implementiert wie eine Funktion, deren Inhalt alles sein kann (der einfachste typische Fall ist die Überprüfung von Array-Grenzen und die Behandlung anderer Fehler), und sie gibt nicht nur eine Referenz auf ein Array-Element zurück.
Ich wünsche Ihnen auch einen schönen Tag.
(Entschuldigen Sie den gestrigen Tonfall, ich war etwas nervös - Ärger auf der Arbeit. Sie hatten nichts damit zu tun. Es sei denn, Sie sind zu kategorisch :)
Muti-Dichtung. Im Vergleich zu einem normalen l-Wert ist dies jedoch sehr viel zeitaufwändiger. Aber es wird so aussehen, wie Sie es brauchen.
______
Ach, verdammt, nein. Dann müssen Sie den Typumwandlungsoperator überladen. Schade.
Ich denke, sie werden es tun, denn es gibt einen offensichtlichen Fehler in der Sprache der Referenzrückgaben.
Sie müssen keine Referenzvariablen erstellen, aber die Rückgabe von L-Werten aus Funktionen ist heilig... :)
Ich denke nicht, dass es prinzipiell nicht gelöst werden kann - die Sprache hat übliche mql-Arrays und sie fühlen sich auf beiden Seiten des Zuweisungsoperators sehr wohl. Aber sie sind C++-Klassen durch ihre Implementierung!
Hier ist ein weiteres Beispiel aus der gleichen Serie, das zwar kompiliert wird, aber nicht funktioniert.
Es geht mir nicht darum, dass sie nicht kompiliert werden sollten, sondern darum, dass sie funktionieren sollten. :)
...
Ich sage nicht, dass es nicht kompiliert werden sollte, ich sage nur, dass es funktionieren sollte... :)
MQL5 hat eine wunderbare Konstante IS_DEBUG_MODE, die zur Gruppe Andere Konstanten gehört. Können wir eine solche Konstante für einen Prüfer hinzufügen? Etwas wie IS_TESTER_MODE...
MQL5 hat eine wunderbare Konstante IS_DEBUG_MODE, die zur Gruppe Andere Konstanten gehört. Können wir eine solche Konstante für einen Prüfer hinzufügen? Etwas wie IS_TESTER_MODE...
Würden diese Konstanten nicht funktionieren?
ENUM_MQL5_INFO_INTEGER
Kennung
Beschreibung
Art der Immobilie
MQL5_PROGRAMM_TYPE
Typ des mql5-Programms
ENUM_PROGRAMM_TYPE
MQL5_DLLS_ALLOWED
Erlaubnis zur Verwendung der DLL für dasaktuell laufende Programm
bool
MQL5_TRADE_ALLOWED
Erlaubniszum Handel für dieses laufende Programm
bool
MQL5_DEBUGGING
Zeichen eines laufenden Programms, das im Debug-Modus arbeitet
bool
MQL5_TESTING
Zeichen der Ausführung eines Programms im Tester
bool
MQL5_OPTIMIERUNG
Zeichen der Ausführung eines Programms während der Optimierung
bool
MQL5_VISUAL_MODE
Zeichen der Ausführung eines Programms im visuellen Testmodus
bool