Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 212

 
A100 #:

Sie schießen sich selbst in den Fuß - indem Sie sich für privat erklären. Sie haben den Zugriff selbst eingeschränkt und wundern sich dann, warum der Code, bei dem externe Funktionen öffentlichen Zugriff benötigen, plötzlich nicht mehr funktioniert

Bei mir funktioniert alles gut und wird auch weiterhin gut funktionieren. Es geht mich nichts an, wenn Sie nicht privat nutzen.

 
fxsaber #:

Für mich funktioniert es gut und wird es auch weiterhin tun. Es geht mich nichts an, wenn Sie nicht privat nutzen.

Sie widersprechen sich selbst - einfache Strukturen und Privatheit sind unvereinbare Dinge.

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Eigenheiten von mql5, Tipps und Tricks

fxsaber, 2021.11.17 07:53

Wenn Sie die beiden Funktionen vergleichen, arbeitet FileReadStruct nur mit einfachen Strukturen. Dies ist ein grundlegender Unterschied.

Sogar Wikipedia weiß das: PlainOld Data(POD) istein Datentyp in modernen höherenProgrammiersprachen, der eine fest definierte Position der Felder im Speicher hat und keine Zugriffsbeschränkungen und automatischeKontrolle erfordert.
 
A100 #:

Du widersprichst dir selbst, wenn du von einfachen Strukturen und Privatem schreibst - das sind unvereinbare Dinge

Sogar Wikipedia weiß das: PlainOld Data(POD) istein Datentyp in modernen höherenProgrammiersprachen, der ein fest definiertes Layout von Feldern im Speicher hat und keinen eingeschränkten Zugriff und keine automatischeKontrolle erfordert.

Der Zusammenhang war auch ohne das Lesen der Terminologie klar. Einfach - keine Strings, dynamischen Arrays oder Klassenobjekte auf jeder Verschachtelungsebene.

Mit dieser Definition kann simple immer ein Vereinigungsfeld sein.

struct MqlTick2 : private MqlTick {};

union UNION
{
  MqlTick2 Tick;
  uchar Bytes[sizeof(MqlTick2)];
};

void OnStart()
{
  UNION u;
  
  ArrayInitialize(u.Bytes, 0); // обнулили u.Tick
}
Die Privatheit bietet keine Garantie für die Unveränderlichkeit nach außen. Und das ist eine gute Sache.
 
fxsaber #:

Der Kontext war klar, ohne dass man sich in die Terminologie einlesen musste. Einfach - keine Strings, dynamischen Arrays und Klassenobjekte auf jeder Verschachtelungsebene.

Mit dieser Definition kann simple immer ein Vereinigungsfeld sein.

private garantiert keine Unveränderlichkeit nach außen. Und das ist eine gute Sache.

Das Elementare wird bereits verwirrt - Unveränderlichkeit ist konstant, nicht privat

 
A100 #:

Du fängst schon an, dich über elementare Dinge zu wundern - Unveränderlichkeit ist konstant, nicht privat

Sie haben einfach nicht verstanden, was gemeint war. Vielleicht erkläre ich es nicht gut. Das spielt keine Rolle mehr.

 
fxsaber #:

Für mich funktioniert es gut und wird es auch weiterhin tun. Wenn Sie nicht privat nutzen, geht mich das nichts an.

Wenn Sie {} anstelle von ZeroMemory verwenden, kann es nicht perfekt funktionieren - ich habe Ihnen das an einem konkreten Beispiel gezeigt - es gibt kein Zeroing (aber Sie denken vielleicht trotzdem anders)

 
A100 #:

Wenn Sie {} anstelle von ZeroMemory verwenden, kann es nicht perfekt funktionieren - ich habe Ihnen das an einem konkreten Beispiel gezeigt

Ich bin mir nur sehr bewusst, was, wo und warum ich es anwende. Die Auffälligkeit wurde geäußert. Es bestand keine Lust, über Geschmäcker zu diskutieren.

 
fxsaber #:

Ich bin mir nur sehr bewusst, was, wo und warum ich es anwende. Die Einzelheiten wurden dargelegt. Es bestand keine Lust, über Geschmäcker zu diskutieren.

Dementsprechend wurden die Gründe für die Nichtverwendung geäußert

 
A100 #:

Wenn Sie {} anstelle von ZeroMemory verwenden, kann es nicht perfekt funktionieren - ich habe Ihnen das an einem konkreten Beispiel gezeigt - es gibt keine Nullstellung (aber Sie denken vielleicht trotzdem anders)

Für union initialisieren wir nur das erste Mitglied, tauschen die Felder aus und der Test wird ausgeführt.
Lassen Sie uns überlegen, ob wir das Verhalten zu Lasten der Geschwindigkeit ändern sollten, damit es so ist, wie es die meisten Nutzer erwarten.


Die Akte... erschienen, als es noch keine Privatsphäre und keine Beständigkeit gab, dachten wir noch nicht daran, dieses Verhalten zu ändern, da wir es nicht als kritisch ansehen.

 
Ilyas #:

Die Akte... erschienen, als es noch keine Privatsphäre und keine Beständigkeit gab, dachten wir noch nicht daran, dieses Verhalten zu ändern, da wir es nicht als kritisch ansehen.

Und es besteht keine Notwendigkeit, das Verhalten bestehender Funktionen zu ändern - es genügt, neue korrekte Funktionen (mit einem Präfix/Suffix) hinzuzufügen und die bisherigen mit einer entsprechenden Warnung für veraltet zu erklären

Grund der Beschwerde: