Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1334
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
Es war Alexey, der etwas in dem von mir angegebenen Code geändert hat. Oder vielleicht habe ich es unterschätzt - ich habe es "auf den Knien" geschrieben, als einfaches Beispiel, um zu verdeutlichen, woran ich mich nicht mehr erinnere.
Vielleicht kann Alexej es uns sagen.)
Die Iteration des Zyklus endet nicht, und es beginnt auch keine neue, sondern es wird zum nächsten Wenn übergegangen. Die Logik wird sich ändern.
Artyom Trishkin:
Это Алексей что-то переделывал в том коде, который я давал. А может и я недоглядел - писал "на коленке" в качестве простого примера для пояснения уже не помню чего.
Artem, warum wird das this-Schlüsselwort hier verwendet? Ohne es funktionieren Methoden mit Klassenmitgliedern...
Alexey, vielen Dank für diese ausführliche Antwort.
Der Zweck der ret-Variable in dem angegebenen Codefragment ist nicht klar...
Warum wird es berechnet, wenn die Methode trotzdem array[0] zurückgibt?
P.S.
Und warum wird dies in einer Klassenmethode verwendet? Wir arbeiten mit Mitgliedern dieser besonderen Klasse...
1. Wozu dient hier die Funktion CopyTime?
2. Vielleicht wird Artem darauf antworten - ist es eine persönliche Vorliebe oder ist es notwendig?
1. Wozu dient die Funktion CopyTime?
2. Vielleicht wird Artem darauf antworten - ist es eine persönliche Vorliebe oder ist es notwendig?
Wenn Sie CopyTime() nicht mögen, ersetzen Sie es durch iTime(). Es gibt keinen Unterschied, die Hauptsache ist, dass man die Zeit des aktuellen Taktes erhält.
In meinem Kopf erinnere ich mich vage daran, wann er geschrieben wurde. Ich glaube, ich habe diese Frage auch gestellt... Und wenn ich mich nicht irre, wird dadurch sichergestellt, dass der Verweis nur auf lokale Methoden erfolgt, falls es ähnliche Methoden in anderen Klassen gibt. Und natürlich wird Artyom das klären.
Nein. Die Bedingung ist ursprünglich so festgelegt, dass der Zeiger, wenn er erfolgreich erstellt wurde, zur Liste hinzugefügt wird. Die Kurvenklammer ist geschlossen, und wenn ein Fehler auftritt, wird die Addition nicht ausgeführt. Die Logik ist beim continue-Operator etwas anders, aber das Ergebnis ist das gleiche.
Ja, das Ergebnis ist dasselbe, das Innere ist anders. Ich denke, dass es mit der Fortsetzung schneller geht, auch wenn es sich um Farbe und Logik handelt ....
Artem, warum wird das Schlüsselwort this hier verwendet? Weil Methoden auch ohne dieses Schlüsselwort mit Klassenmitgliedern funktionieren...
Sie werden. Ich benutze es, weil ich es will :) Sie gibt ausdrücklich an, welche Klassenmethoden verwendet werden.
Wenn Sie zwei Klassen haben, eine als Elternteil und eine als Nachkomme, und Sie haben zwei Methoden mit demselben Namen, die aber aus irgendeinem Grund nicht virtuell sind, müssen Sie explizit angeben, welche davon verwendet werden soll.
Angenommen, die übergeordnete Klasse ist CParent und die geerbte Klasse ist CInheritedund beide haben die Methode Method().
Wenn wir in diesem Fall eine Methode Method() einer CParent-Klasse aufrufen, ruft diese explizit eine Methode der CParent-Klasse auf - dies ist hier nicht erforderlich. Wir können die Methode mit oder ohne sie aufrufen.
Wenn wir eineMethode() in einer geerbten CInherited-Klasseaufrufen ,wird auch die Methodedieser Klasse aufgerufen, da wir zuerst nach einer Methode suchen, die zu der Klasse gehört, aus der wir sie aufrufen.
Wenn wir CParent::Method() in einer CInherited-Klasseaufrufen , wird auf diese Weise die Methode der Elternklasse aufgerufen, da wir durch den Kontextauflösungsoperator explizit eine Methode angegeben haben, die zur Elternklasse gehört.
Aber trotzdem würde ich die Methode Method() in einer geerbten CInherited-Klasse mit this - um sicher zu sein, dass diese (this == "this") geerbte Klasse aufgerufen wird.
Es gibt auch andere Erklärungen für diese Verwendung. Vielleicht kann uns das jemand sagen, der mehr Erfahrung mit OOP hat.
Ja, das Ergebnis ist dasselbe, das Innere ist anders. Ich denke, dass es mit der Fortsetzung schneller geht, auch wenn es sich um Farbe und Logik handelt ....
Da sollte es keinen Unterschied geben. Ich finde es einfach schöner - weniger Klammern und Einrückungen.
Nun ja, ich gehöre zu diesen "einigen", vor allem wenn ich eine Standardfunktion aus einer Klasse aufrufe, gebe ich immer den globalen Kontext an. Nur weil ich mir vorstellen kann, in dieser Klasse eine Methode mit demselben Namen wie die Standardfunktion zu schreiben - damit ich nie vergesse, was sie tut. Und da ist :: nützlich, um die Standardfunktion aufzurufen, und dies ist nützlich, um meine Methode mit demselben Namen aufzurufen.