mql5言語の特徴、微妙なニュアンスとテクニック - ページ 212

 
A100 #:

プライベートの 宣言は、自分の足元をすくいます。自分自身でアクセスを制限しておいて、外部関数がパブリックアクセスを必要とするコードが突然動作しなくなるのはなぜだろう?

私はすべてうまくいっていますし、これからもうまくいくでしょう。プライベートを使わない人には関係ない話です。

 
fxsaber #:

私にとっては問題なく機能しており、今後もそうしていくつもりです。プライベートを使わない人には関係ない話です。

シンプルな構造とプライベートは相容れないものだ、というのは矛盾していますね。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

mql5の特性、ヒントとコツ

fxsaber, 2021.11.17 07:53

この2つの関数を比較すると、FileReadStructは単純な構造体に対してのみ 動作することがわかります。これは根本的な違いです。

ウィキペディアですら知っていることだが、プレーンオールドデータPOD)とは、現代の高級プログラミング言語におけるデータの一種で、メモリ上のフィールドの位置が厳密に定義されており、アクセス制限や 自動制御を 必要としないデータの ことである。
 
A100 #:

シンプルな構造とプライベートは相容れないものである、と書いているのは矛盾しています。

ウィキペディアですら知っていることだが、プレーンオールドデータPOD)とは、現代の高級プログラミング言語において、メモリ上のフィールドのレイアウトが厳密に定義されており、アクセス制限や 自動制御を 必要としないデータ型の ことである。

専門用語を読まなくても文脈がわかるようになった。シンプル - 文字列、動的配列、クラスオブジェクトは、どの入れ子レベルでもありません。

この定義では、simpleは常にユニオンフィールドになり得ます。

struct MqlTick2 : private MqlTick {};

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

void OnStart()
{
  UNION u;
  
  ArrayInitialize(u.Bytes, 0); // обнулили u.Tick
}
privateは、外部からの不変性を保証するものではありません。そして、それは良いことだと思います。
 
fxsaber #:

専門用語を読み込むことなく、文脈を理解することができた。シンプル - 文字列、動的配列、クラスオブジェクトは、どの入れ子レベルでもありません。

この定義では、simpleは常にユニオンフィールドになり得ます。

privateは外部からの不変性を 保証するものではありません。そして、これは良いことだと思います。

すでに初歩的な混乱が始まっている - 不変性はconstであり、privateではない

 
A100 #:

あなたはすでに初歩的なことで混乱し始めている - 不変性はconstであり、privateではない

あなたが意味を理解していなかっただけです。私の説明不足かもしれませんが。もうどうでもいいんです。

 
fxsaber #:

私にとっては問題なく機能しており、今後もそうしていくつもりです。プライベートで使わないなら、私には関係ないことです。

ZeroMemoryの代わりに{}を使用した場合、完璧に動作するわけではありません。

 
A100 #:

ZeroMemoryの代わりに{}を使用した場合、完璧に動作することはできませんので、具体的な例で 説明します。

ただ、何を、どこに、なぜ塗るかは完璧に意識しています。そのクセが声高に叫ばれていた。嗜好品について議論する気も起きない。

 
fxsaber #:

ただ、何を、どこに、なぜ塗るかは完璧に意識しています。具体的な内容が声高に 叫ばれた。嗜好品について議論する気も起きない。

使っていない理由もそれなりに声が出ていました。

 
A100 #:

ZeroMemoryの代わりに{}を使用した場合、完璧に動作することはできません -具体例で 示しました - ゼロイングはありません(しかし、あなたはまだそう思っているかもしれません)

ユニオンの場合、最初のメンバーだけを初期化し、フィールドを入れ替えればテストが実行される。
多くのユーザーが期待するような動作にするために、速度を犠牲にしてでも変更すべきかどうか考えてみましょう。


ファイル...は、プライバシーと不変性が存在しなかったときに登場しました。私たちは、この行動を重要視していないので、まだ変えようとは思っていません。

 
Ilyas #:

ファイル...は、プライバシーと不変性が存在しなかったときに登場しました。私たちは、この行動を重要視していないので、まだ変えようとは思って いません。

また、既存の関数の動作を変更する必要はありません。新しい正しい関数を (何らかのプレフィックス/サフィックスを付けて)追加 し、それに対応する警告で以前の関数の廃止を宣言するだけで十分です。

理由: