エラー、バグ、質問 - ページ 1332 1...132513261327132813291330133113321333133413351336133713381339...3185 新しいコメント 削除済み 2015.07.24 11:13 #13311 Alexey Navoykov: 同じ名前をわざと つけることはありません。 ローカルな関数コードは、外部プログラムとは別の人生を歩んでいます。 また、外部変数の名前は時間と共に変化し、新しい外部変数が追加されることもあります。その後、突然、何百もの関数のうちの1つが同じ名前のローカル変数 を持っていたら、グローバル変数の 名前をどう変えるべきだと思いますか? 開発者のバグに言い訳を探すべきではありません。開発者のバグの言い訳をしたいわけではないのですが、このバグは、プロジェクトで作業するときに入力パラメータを担当する変数名を同じにしないことで、簡単に回避することができるのです。入力パラメータの名前を変更するだけです。入力パラメータに何百もの変数があり、すべてのコードを編集する必要があるとは思えません :) コードの主要部分は通常ソフトウェアのエントリポイントで書かれ、それほど大きくはありません。また、関数(メソッド)に対しては、入力パラメータにどのような変数名が渡されるかに違いはない。もちろん、関数がグローバル変数を使うようなコードを書けば、もちろんいろいろと変更しなければならないのですが、このコードはまったくビジョンがなく書かれているので、本当にモダナイズが難しいのです。開発者(MetaQuotes)を消費者の立場で見れば、もちろん、一度にたくさんのものが欲しいわけですが :) 私はクロスプラットフォームの端末で仕事をしたいのですが、この要望に対する答えは、「あるものを使うか、それを通り越すか」のどちらかでしょうね :) Alexey Navoykov 2015.07.24 12:38 #13312 Konstantin Karpov:入力パラメータの名前を変えるだけで...。ある種、ノリノリなんですね。そうすると、ローカル変数 名が一致する別の関数が追加されて、また変更しなければならないでしょ? 外部変数名は、単なる文字の羅列ではなく、特定の意味を持つんだ。また、プリセット設定やテスター、オプティマイザーの設定も、名前を変更するとこのパラメーターの設定はすべて失われます。例えば、あなたが外部から関数を挿入したとします。おそらく、あなたが書いたものではないのでしょう。 削除済み 2015.07.24 13:29 #13313 Alexey Navoykov:ある種、ノリノリなんですね。その後、ローカル変数が 同じ名前の他の関数が追加され、また変更しなければなりませんよね。 外部変数の名前は単なる文字の羅列ではなく、特定の意味を持っています。一生懸命考えて、簡潔な名前を探して、それを変えろと言っている場合もあります。 また、名前を変えると、プリセット設定や、テスター、オプティマイザーの設定もすべてこのパラメーターから失われます。例えば、外部から関数を挿入した場合、その関数は自分が書いたものではありませんから、ローカル変数の 名前は何でもいいことになります。適当にやってください。でも、大きなプロジェクトは書いていないようですね。グローバル変数名とローカル変数名の宣言スタイルが明確に分かれているので、自分の関数定義を見ても意味がない。そのため、グローバル変数名とローカル変数名が一致するような問題は発生しません。重要なのは、関数が衝突することなく論理を展開することです。グローバル変数名と ローカル変数名を一致させると、びっくりすることになりますが、これはすでに解決済みです。例えば、_iCountのように、ローカル変数名に余計な_を付ける。この場合、変数名に関する問題は発生しません。なぜなら、2回目に説明しようとしたこと、つまり変数はローカルスコープに存在し、そこで作成されるからです。また、この場合、グローバル変数がなくても、名前に曖昧さが生じることはありません。そして、この時点で議論を終了しましょう。 Maxim Khrolenko 2015.07.24 17:21 #13314 前回の 記事に戻ります。MT4/845、Windows7/64bit、スクリプト。#property strict double d1 = 2.009745110811111111111111111; double d2 = 3.654; double d3; //--- void OnStart() { d3=d1/d2; Print("AA: d3 = ",d3); Print("BB: d3 = ",DoubleToString(d3)); Print("CC: d3 = ",DoubleToString(d3,8)); Print("DD: d3 = ",DoubleToString(d3,9)); Print("EE: d3 = ",DoubleToString(d3,10)); }結果管理、DoubleToStringに この関数が浮動小数点数を指定された精度に 丸めることを追加します。 TheXpert 2015.07.24 19:04 #13315 ローカル変数と入力変数の名前を同じにしないのは良いアイデアです Artyom Trishkin 2015.07.24 19:32 #13316 Комбинатор:ローカル変数と入力変数の名前を同じにしないのは良いアイデアです いい意味でそうなんですが、他人のコードを修正して、自分のライブラリを接続して......ということがあります。ドン A100 2015.07.25 14:30 #13317 添付ファイルのMEにある行をスペースなしで続けてみてください。 ファイル: comment.mq5 1 kb Yousufkhodja Sultonov 2015.07.27 06:37 #13318 議論するときに、マーケットにある製品にリンクしてもいいのでしょうか?それとも広告とみなされ、禁止されるのでしょうか? Vladimir Karputov 2015.07.27 07:06 #13319 Yousufkhodja Sultonov: 議論するときに、マーケットにある製品にリンクしてもいいのでしょうか?それとも広告とみなされ、禁止されるのでしょうか? 各製品には、「ディスカッション」(購入を検討されている方向け)と「レビュー」(購入された方向け)の2つのタブがあります。ここでは、製品に関する議論が行われます。 A100 2015.07.28 18:19 #13320 演算子の後のコンパイル結果に疑問がある ?:int f() { int array[]; return ( false ? array : array ); } void OnStart() { Print( f() ); } // 0 error(s), 0 warning(s) 結果: 65618 (どうしてこうなった?)、コンパイル時エラーが発生するはずです。 1...132513261327132813291330133113321333133413351336133713381339...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
同じ名前をわざと つけることはありません。 ローカルな関数コードは、外部プログラムとは別の人生を歩んでいます。 また、外部変数の名前は時間と共に変化し、新しい外部変数が追加されることもあります。その後、突然、何百もの関数のうちの1つが同じ名前のローカル変数 を持っていたら、グローバル変数の 名前をどう変えるべきだと思いますか? 開発者のバグに言い訳を探すべきではありません。
開発者のバグの言い訳をしたいわけではないのですが、このバグは、プロジェクトで作業するときに入力パラメータを担当する変数名を同じにしないことで、簡単に回避することができるのです。入力パラメータの名前を変更するだけです。入力パラメータに何百もの変数があり、すべてのコードを編集する必要があるとは思えません :) コードの主要部分は通常ソフトウェアのエントリポイントで書かれ、それほど大きくはありません。また、関数(メソッド)に対しては、入力パラメータにどのような変数名が渡されるかに違いはない。
もちろん、関数がグローバル変数を使うようなコードを書けば、もちろんいろいろと変更しなければならないのですが、このコードはまったくビジョンがなく書かれているので、本当にモダナイズが難しいのです。
開発者(MetaQuotes)を消費者の立場で見れば、もちろん、一度にたくさんのものが欲しいわけですが :) 私はクロスプラットフォームの端末で仕事をしたいのですが、この要望に対する答えは、「あるものを使うか、それを通り越すか」のどちらかでしょうね :)
入力パラメータの名前を変えるだけで...。
ある種、ノリノリなんですね。そうすると、ローカル変数 名が一致する別の関数が追加されて、また変更しなければならないでしょ? 外部変数名は、単なる文字の羅列ではなく、特定の意味を持つんだ。また、プリセット設定やテスター、オプティマイザーの設定も、名前を変更するとこのパラメーターの設定はすべて失われます。
例えば、あなたが外部から関数を挿入したとします。おそらく、あなたが書いたものではないのでしょう。
ある種、ノリノリなんですね。その後、ローカル変数が 同じ名前の他の関数が追加され、また変更しなければなりませんよね。 外部変数の名前は単なる文字の羅列ではなく、特定の意味を持っています。一生懸命考えて、簡潔な名前を探して、それを変えろと言っている場合もあります。 また、名前を変えると、プリセット設定や、テスター、オプティマイザーの設定もすべてこのパラメーターから失われます。
例えば、外部から関数を挿入した場合、その関数は自分が書いたものではありませんから、ローカル変数の 名前は何でもいいことになります。
適当にやってください。でも、大きなプロジェクトは書いていないようですね。
グローバル変数名とローカル変数名の宣言スタイルが明確に分かれているので、自分の関数定義を見ても意味がない。そのため、グローバル変数名とローカル変数名が一致するような問題は発生しません。重要なのは、関数が衝突することなく論理を展開することです。グローバル変数名と ローカル変数名を一致させると、びっくりすることになりますが、これはすでに解決済みです。
例えば、_iCountのように、ローカル変数名に余計な_を付ける。この場合、変数名に関する問題は発生しません。なぜなら、2回目に説明しようとしたこと、つまり変数はローカルスコープに存在し、そこで作成されるからです。また、この場合、グローバル変数がなくても、名前に曖昧さが生じることはありません。そして、この時点で議論を終了しましょう。
前回の 記事に戻ります。MT4/845、Windows7/64bit、スクリプト。
結果
管理、DoubleToStringに この関数が浮動小数点数を指定された精度に 丸めることを追加します。
ローカル変数と入力変数の名前を同じにしないのは良いアイデアです
ローカル変数と入力変数の名前を同じにしないのは良いアイデアです
添付ファイルのMEにある行をスペースなしで続けてみてください。
議論するときに、マーケットにある製品にリンクしてもいいのでしょうか?それとも広告とみなされ、禁止されるのでしょうか?
演算子の後のコンパイル結果に疑問がある ?:
結果: 65618 (どうしてこうなった?)、コンパイル時エラーが発生するはずです。