1. Извини, - бред. Я понимаю, тут паранойя в моде, и является ломовым аргументом за "почему так не надо делать". Никакой опасности не вижу в упор. Смотрел внимательно, если чё. Любое имя, в конечном счёте есть ссылка. Индексация есть обычное расширение понятия имени. Не более. Давай запретим присваивание вообще. В целях безопасности. Ссылки же крайне опасны так?
2. Духу объектно-ориентированного программирования, при такой логике, яростно противоречат С++, С#, Делфи, пара дюжин менее популярных языков, в которых индексаторы совершенно нормально работают и справа и слева. Причём здравому смыслу и моему духу это почему-то не противоречит.
Индексаторы делаются для связи с внешней средой. Их функция именно интерфейсная. Я могу инкапсулировать и прятать что угодно, но индексы мне нужны для оперирования объектами как массивами. Фактически все массивы как-то устроены. Например обычные динамические массивы mql. Может запретим их слева от оператора присваивания ставить? Заменим функцией какой-нибудь типа SetArrayValue(array, i, j, value); Заодно и в читабельности выиграем. Да и отладка станет куда проще. Мля. Уф..
3. А как насчёт того, чтоб сделать нормальный индексатор? Горничная это конечно классно, но королева всё-таки лучше.
4. Вот в этом месте у меня крыша конкретно начала ехать. Это что, нечитабельно??
Вот это читабельнее, да?
t.setDataElement(i, i*i);
Круто. Пожалуй пойду лечиться.
5. Ваще круто.
6. Я плакаль.
e(array, i, j, value); こうすることで、可読性も向上します。デバッグも楽になるしね。 やばい。うっ...
マクロとインライン関数は確かに別物です。でも、そういうことではないんです。以下は、コンパイル時に引数の値が不明な場合の例です。
最初のケースでは、コードを現在の関数に貼り付ける必要があり(推測)、2番目のケースでは、スタックを介して渡されたパラメータで 関数が呼び出される(推測)。しかし、最適化のために、コンパイラは実際には2番目の変形も代入で実装することがあります。そうなんですか? わからない。だから聞いたんです。
楕円オブジェクトは、アンカー ポイントをマウスでクリックした場合のみハイライトされます。
バグなのか機能なのか?非常に不便な実装になっています。
Это что, юмор такой чёрный?
1. Извини, - бред. Я понимаю, тут паранойя в моде, и является ломовым аргументом за "почему так не надо делать". Никакой опасности не вижу в упор. Смотрел внимательно, если чё. Любое имя, в конечном счёте есть ссылка. Индексация есть обычное расширение понятия имени. Не более. Давай запретим присваивание вообще. В целях безопасности. Ссылки же крайне опасны так?
2. Духу объектно-ориентированного программирования, при такой логике, яростно противоречат С++, С#, Делфи, пара дюжин менее популярных языков, в которых индексаторы совершенно нормально работают и справа и слева. Причём здравому смыслу и моему духу это почему-то не противоречит.
Индексаторы делаются для связи с внешней средой. Их функция именно интерфейсная. Я могу инкапсулировать и прятать что угодно, но индексы мне нужны для оперирования объектами как массивами. Фактически все массивы как-то устроены. Например обычные динамические массивы mql. Может запретим их слева от оператора присваивания ставить? Заменим функцией какой-нибудь типа SetArrayValue(array, i, j, value); Заодно и в читабельности выиграем. Да и отладка станет куда проще. Мля. Уф..
3. А как насчёт того, чтоб сделать нормальный индексатор? Горничная это конечно классно, но королева всё-таки лучше.
4. Вот в этом месте у меня крыша конкретно начала ехать. Это что, нечитабельно??
Вот это читабельнее, да?
t.setDataElement(i, i*i);
Круто. Пожалуй пойду лечиться.
5. Ваще круто.
6. Я плакаль.
e(array, i, j, value); こうすることで、可読性も向上します。デバッグも楽になるしね。 やばい。うっ...
まあ、セッターは単純な方程式以上のことができるのが強みですからね。
例えば、情報を記録したり、データを変換したり(文字列やもっと複雑なデータの場合)、何か重要なことが起こったら他のオブジェクトにメッセージを送ったり(データの更新など)することができます。
日付が変わったことを、オブジェクトはどうやって知ることができるのでしょうか?どうやら引用符を保存するようですね・・・。
そうそう、これは間違った問題で、あなたのオブジェクトは構造体のようなもので、実際には何も管理していないのです。
全ては別のゴミクラスで処理され、さらに悪いことに、全ては onStart(), onTick(), ... で起こっているのです。!:)
良い一日を
3.普通のインデクサーを作ってはどうか? メイドもカッコイイけど、クイーンの方がいい。
ムーティガスケットしかし、通常のlvalueと比べると、時間的にはかなり高くつくでしょう。でも、必要な形にはなりますよ。
______
ああ、とんでもない。それなら、タイプゴースト 演算子のオーバーロードが必要です。可哀想に。
まあ、セッターの利点は、単純な方程式以上のことができることです。
例えば、情報を記録したり、データを変換したり(文字列やもっと複雑なデータの場合)、何か重要なことが起こったときに他のオブジェクトにメッセージを送ったり(データの更新など)することができます。
日付が変わったことを、オブジェクトはどうやって知ることができるのでしょうか?どうやら引用符を保存するようですね・・・。
そうそう、あなたのオブジェクトは構造体のようなもので、実際には何も制御していないので、誤った問題なのです。
全ては別のゴミクラスで処理され、さらに悪いことに、全ては onStart(), onTick(), ... で起こっているのです。!:)
良い一日を
ポイントは、インデクサはセッターと機能的に 同じ であること 。 これは関数と全く同じように実装されており、その中身は何でもよく(最も単純な典型例は配列の境界チェックとその他のエラー処理)、単に配列の項目への 参照を返すだけではありません。
あなたも良い一日をお過ごしください。
(昨日の調子ですみません。ちょっとイライラしていました。あなたは何もしていない。まあ、あまりに断定的でなければね :)
ムーティガスケットしかし、通常のlvalueと比べると、時間的にはかなり高くつくでしょう。でも、必要な形にはなりますよ。
______
ああ、とんでもない。その時は、型変換 演算子をオーバーロードする必要があります。残念です。
実際、私は彼らがやると思います。 言語に参照リターンの明らかな欠陥があるのです。
参照変数を作る必要はないが、関数からのl値返しは神聖なものである...。:)
この言語には通常のmql-arrayがあり、代入演算子の両側で非常にうまく機能しています。しかし、これらは実装上は C++ のクラスです !
同じシリーズの別の例です。 このコードはコンパイルできますが、動作しません。
私が言いたいのは、コンパイルしてはいけないということではなく、動作させるべきだということです。:)
...
コンパイルするなとは言っていない、動くはずだと言っているのだが...。:)
MQL5には、Other定数グループに属する素晴らしい定数IS_DEBUG_MODEが あります。テスター用の定数を追加することは可能ですか?IS_TESTER_MODEみたいな...。
MQL5には、Other定数グループに属する素晴らしい定数IS_DEBUG_MODEが あります。テスター用の定数を追加することは可能ですか?IS_TESTER_MODEみたいな...。
この定数ではダメなんでしょうか?
enum_mql5_info_integer
識別子
商品説明
物件タイプ
mql5_program_type
mql5-programの種類
enum_program_type
mql5_dlls_allowed
現在実行中の プログラムのDLLを使用する許可
ブール
mql5_trade_allowed
本ランニング プログラムでの取引 許可
ブール
MQL5_DEBUGGING
デバッグモードで動作しているプログラムのサイン
ブール
MQL5_TESTING
テスターでのプログラム実行のサイン
ブール
mql5_optimization
最適化中のプログラム実行のサイン
ブール
mql5_visual_mode
ビジュアルテストモードでのプログラム実行のサイン
ブール