タイピングに関する質問 - ページ 7 12345678910 新しいコメント pavlick_ 2018.12.10 15:39 #61 Dmitry Fedoseev:人が持つ問題とは何か)))長生きしてやるぞー。 ちなみにd=(double)array[5].to_double() と書く方がd=(double)array[5] よりもずっと簡単 です。押さえるべきポイントだけ です。しかし、私たちは安易な方法を求めているわけではありません。なぜd=(double)array[5]と書くのか?それは、こんなトリビアに悩まされることはない、ということです。以下は実際のコードの一部です。 MYCRTMFLT(i+1, chart[MYSEG(MYSCNT-i).start].time, chart[MYSEG(MYSCNT-i).start].price, chart[MYSEG(MYSCNT-i).top].time, chart[MYSEG(MYSCNT-i).top].price, chart[MYSEG(MYSCNT-i).top].price>chart[MYSEG(MYSCNT-i).start].price? MYCLRUP : MYCLRDOWN, STYLE_SOLID, true); chart[index] returns struct {price; time} そして、ほとんどの場合、文脈から理解できるのに、なぜ、.time/.priceを付け続けるのでしょうか?確かに、時にはプロンプトが必要になることもありますが(末尾の行のように)、ほとんどの場合、生活は楽になり、書く量も減ります。 Ilya Malev 2018.12.10 15:40 #62 Dmitry Fedoseev:人が持つ問題とは何か)))長生きしてやるぞー。 ちなみにd=array[5].to_double() と書くと、d=(double)array[5] よりもずっと簡単 です。ただ、ドットが押さ れるだけですね。しかし、私たちは安易な方法を求めているわけではありません。もちろん、コンパイル時にdがdouble以外ありえないことが分かっているのに、d=(double)array[5]と書かなければならない。 ネズミは泣きながら懇願したが、サボテンを噛み続けた...」。 Maxim Kuznetsov 2018.12.10 15:46 #63 Ilya Malev:もちろん、d=(double)array[5]と書くのは義務です。コンパイル時にdouble以外 にはなり得ないことが分かっているのに・・・ネズミは泣いて頼みましたが、サボテンをかじり続けました・・・。C++では、Oregatog<=>をdにオーバーロードし、かじる、泣かない;-)。 PS/ と、連想性と優先順位の観点から << 演算子をより適切なものとして使用します。 Dmitry Fedoseev 2018.12.10 15:50 #64 pavlick_:なぜd=(double)array[5]と書くのか?それは、こんなトリビアに悩まされることはない、ということです。以下は実際のコードの断片です。 chart[index] は struct {price; time} を返します。 そして、ほとんどの場合、文脈から理解 できるのに、なぜ .time/.price を付け続けるのでしょうか?確かに、時にはプロンプトが必要になることもありますが(末尾の行のように)、ほとんどの場合、生活は楽になり、書く量も減ります。プログラマは(double)をオーバーロードして、array[5]が何らかのオブジェクトではなく、数値doubleを 返すようにしようと考えて います。そうでしょう? この文脈は、与えられた例のどこに理解できるのでしょうか。おそらく、MYCRTMFLTのパラメータ型?これは、戻り値の型に関するオーバーロードである。 Ilya Malev 2018.12.10 15:50 #65 fxsaber:どうしてもやりたいのであれば など _W(Color)[2] = (uchar)230; // Записали по смещению 2 значение (uchar)230. PRINT(Color) // Убедились, что Color теперь C'241,248,230' ColorToString(Color&(uint(-1)&65535)|(230<<16));と同じではないでしょ うか?このままあなたのコードを研究していると、脳が壊れてしまいそうで怖いです。 つまり、アンダースコア付きの大文字の多用とコンテキスト解決 操作を除けば、あなたのメソッドのすべてが立派だということです(冗談抜きで)。 もし(コンテキストを解決する操作を)オーバーロードさせたら、ライブラリと一緒に幽体離脱してしまうと思います(笑)。 Ilya Malev 2018.12.10 15:52 #66 Maxim Kuznetsov:PS/で、連想性と優先順位により、より適切なものとして<<演算子を使用する私も率直に言って、思い当たる節がありました。<< を >> でオーバーロードして、苦しまないでください。しかし、T()のオーバーロードを許可することの望ましさがなくなるわけではありません。 pavlick_ 2018.12.10 16:01 #67 Dmitry Fedoseev:私の理解では、ここでオーバーロードして、array[5]が何らかのオブジェクトではなく、数値doubleを 返すようにしようとしているのでしょう。そうでしょう? この例のどこに、理解できる文脈があるのでしょうか。MYCRTMFLTパラメータタイプですか?これは、返される値の型に関するオーバーロードである。全く問題ないと思います。 double d; d = chart[i]; // call operator double void f(datetime t); f(chart[i]); // call operator datetime マクロは識別子か関数呼び出しで 終わり、コンパイラはそこから何を期待されているかを理解します。そして、そうならない場合(曖昧さを表す悪態をつくコンパイルエラー)、いつでもそれを助けることができます: chart[i].price Dmitry Fedoseev 2018.12.10 16:06 #68 Ilya Malev:もちろん、d=(double)array[5]と書かなければならない。コンパイル時にdouble以外にはなり得ないことが分かっているのに・・・。dの他にarrayという名前のものもあります。 コンパイラが不適切な型を代入することを警告するのは、まったく悪いことではありません。コンパイラが生成する警告が ないことに後で文句を言われないように、このコードを書いた人は結果に全責任を持っていることをコンパイラに示すべきです。 Dmitry Fedoseev 2018.12.10 16:07 #69 pavlick_:全く問題ないと思います。 ... 私もそうです。 Ilya Malev 2018.12.10 16:29 #70 Dmitry Fedoseev:コンパイラが不適切な型を代入することを警告するのは、まったく悪いことではありません。コンパイラの警告が なかったと後で文句を言われないように、これを書いた人が結果に全責任を持っていることをコンパイラに示す必要があります。ただ、この代入のために、彼自身が operator double(){...} メソッドを定義している場合は別で、明らかに後で double 型の変数の後に (double) と書くとコンパイラの警告が出るようにするためではありません。 一般的には、明らかに話が堂々巡りになっているので、最終的には型のオーバーロードが許可されることを期待しましょう。個人的には、それを可能にするために、オプションのどこかにチェックを入れて、「結果に全責任を持つことに同意します」と確認すれば気にならないのですが。 12345678910 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
人が持つ問題とは何か)))長生きしてやるぞー。
ちなみにd=(double)array[5].to_double() と書く方がd=(double)array[5] よりもずっと簡単 です。押さえるべきポイントだけ です。しかし、私たちは安易な方法を求めているわけではありません。
なぜd=(double)array[5]と書くのか?それは、こんなトリビアに悩まされることはない、ということです。以下は実際のコードの一部です。
chart[index] returns struct {price; time} そして、ほとんどの場合、文脈から理解できるのに、なぜ、.time/.priceを付け続けるのでしょうか?確かに、時にはプロンプトが必要になることもありますが(末尾の行のように)、ほとんどの場合、生活は楽になり、書く量も減ります。
人が持つ問題とは何か)))長生きしてやるぞー。
ちなみにd=array[5].to_double() と書くと、d=(double)array[5] よりもずっと簡単 です。ただ、ドットが押さ れるだけですね。しかし、私たちは安易な方法を求めているわけではありません。
もちろん、コンパイル時にdがdouble以外ありえないことが分かっているのに、d=(double)array[5]と書かなければならない。 ネズミは泣きながら懇願したが、サボテンを噛み続けた...」。
もちろん、d=(double)array[5]と書くのは義務です。コンパイル時にdouble以外 にはなり得ないことが分かっているのに・・・ネズミは泣いて頼みましたが、サボテンをかじり続けました・・・。
C++では、Oregatog<=>をdにオーバーロードし、かじる、泣かない;-)。
PS/ と、連想性と優先順位の観点から << 演算子をより適切なものとして使用します。なぜd=(double)array[5]と書くのか?それは、こんなトリビアに悩まされることはない、ということです。以下は実際のコードの断片です。
chart[index] は struct {price; time} を返します。 そして、ほとんどの場合、文脈から理解 できるのに、なぜ .time/.price を付け続けるのでしょうか?確かに、時にはプロンプトが必要になることもありますが(末尾の行のように)、ほとんどの場合、生活は楽になり、書く量も減ります。
プログラマは(double)をオーバーロードして、array[5]が何らかのオブジェクトではなく、数値doubleを 返すようにしようと考えて います。そうでしょう?
この文脈は、与えられた例のどこに理解できるのでしょうか。おそらく、MYCRTMFLTのパラメータ型?これは、戻り値の型に関するオーバーロードである。
どうしてもやりたいのであれば
など
このままあなたのコードを研究していると、脳が壊れてしまいそうで怖いです。
つまり、アンダースコア付きの大文字の多用とコンテキスト解決 操作を除けば、あなたのメソッドのすべてが立派だということです(冗談抜きで)。
もし(コンテキストを解決する操作を)オーバーロードさせたら、ライブラリと一緒に幽体離脱してしまうと思います(笑)。
PS/で、連想性と優先順位により、より適切なものとして<<演算子を使用する
私も率直に言って、思い当たる節がありました。<< を >> でオーバーロードして、苦しまないでください。しかし、T()のオーバーロードを許可することの望ましさがなくなるわけではありません。
私の理解では、ここでオーバーロードして、array[5]が何らかのオブジェクトではなく、数値doubleを 返すようにしようとしているのでしょう。そうでしょう?
この例のどこに、理解できる文脈があるのでしょうか。MYCRTMFLTパラメータタイプですか?これは、返される値の型に関するオーバーロードである。
全く問題ないと思います。
マクロは識別子か関数呼び出しで 終わり、コンパイラはそこから何を期待されているかを理解します。そして、そうならない場合(曖昧さを表す悪態をつくコンパイルエラー)、いつでもそれを助けることができます: chart[i].price
もちろん、d=(double)array[5]と書かなければならない。コンパイル時にdouble以外にはなり得ないことが分かっているのに・・・。
dの他にarrayという名前のものもあります。
コンパイラが不適切な型を代入することを警告するのは、まったく悪いことではありません。コンパイラが生成する警告が ないことに後で文句を言われないように、このコードを書いた人は結果に全責任を持っていることをコンパイラに示すべきです。
全く問題ないと思います。
...
コンパイラが不適切な型を代入することを警告するのは、まったく悪いことではありません。コンパイラの警告が なかったと後で文句を言われないように、これを書いた人が結果に全責任を持っていることをコンパイラに示す必要があります。
ただ、この代入のために、彼自身が operator double(){...} メソッドを定義している場合は別で、明らかに後で double 型の変数の後に (double) と書くとコンパイラの警告が出るようにするためではありません。
一般的には、明らかに話が堂々巡りになっているので、最終的には型のオーバーロードが許可されることを期待しましょう。個人的には、それを可能にするために、オプションのどこかにチェックを入れて、「結果に全責任を持つことに同意します」と確認すれば気にならないのですが。