MQL5言語をゼロから独学で学ぶ - ページ 32

 
#property script_show_inputs
input string inA = "достаточно времени";
input string inB = "достаточно терпения";
const string a = "достаточно времени";
const string b = "достаточно терпения";

//+------------------------------------------------------------------+
void OnStart()
{
   if(inA == a && inB == b)
   {
      Print("я выучу язык MQL 5");
   }
}
//+------------------------------------------------------------------+

UPDです。

文字列は嫌いなので、MQLではインスタンス変数やセットの説明をコメントとして作成できるのが良いですね、その方が良いです。

#property script_show_inputs
enum E_STATE
{
   STATE_A/*достаточно времени*/,
   STATE_B/*НЕ достаточно времени*/,
   STATE_C/*достаточно терпения*/,
   STATE_D/*НЕ достаточно терпения*/,
   STATE_E/*достаточно денег*/,
   STATE_F/*НЕ достаточно денег*/
};
input E_STATE inA = STATE_A;
input E_STATE inB = STATE_C;

//+------------------------------------------------------------------+
void OnStart()
{
   if(inA == STATE_A && inB == STATE_C)
   {
      Print("я выучу язык MQL 5");
   }
   else
   {
      Print("я НЕ выучу язык MQL 5");
   }
}
//+------------------------------------------------------------------+
 
Igor Makanu:

UPDです。

MQLでは、入力変数やセットの説明をコメントとして作成できるので、その方が良いですね。

カッコイイ!こんな簡単なことなのに、いろいろな解決策があるんですね。ありがとうございます。

ウラジミールさん、ありがとうございます。

 
MrBrooklin:

素晴らしいこんな簡単なことなのに、いろいろな解決策があるんですね。ありがとうございます。

敬具 ウラジミール

今は、構文を練習するよりも、論理に従った方が正しいでしょう。論理的には、「その言語を学ぶか、学ばないか」という問いの結果は、これに関連するいくつかのパラメータを計算する関数しか返せないことになる。この関数はyes/noの結果を返さなければならないので、bool型で宣言されています。if()の条件から直接関数を呼び 出すことができます。

if(Enough_time() && Enough_patience())Print("I will learn the language!");

else Print("I won't learn the language...");


では、機能の中身を考えてみましょう。

 
Реter Konow:
残念なことに、これは誤解を招き、未知の学びの道へと導いてしまうのです。状態」とこの列挙はどのような関係があるのでしょうか?同じ土俵でのフィクションです。

今は、構文を練習するよりも、論理に従った方が正しいでしょう。論理的には、「その言語を学ぶか、学ばないか」という問いの結果は、それに関連するいくつかのパラメータを計算する関数によってのみ返されることが示唆される。この関数はyes/noの結果を返さなければならないので、bool型で宣言されています。この関数は、if()条件から直接呼び出す ことができます。

if(Enough_time() && Enough_patience())Print("I will learn the language!");

else Print("Alas, I won't learn the language...");


では、機能の中身を考えてみましょう。

いじめてるのか、もちろんコメントは不完全だ、aの 最初の変数はいわば実行条件、2番目のaは 事実の通り))))))))))))そして、そのためにinAがインスタンスを介して入力され、不変で、変数a ....そうですね、定数変数ではなく、静的変数か単なるテキスト型であるべきですが)))

でも、まだ意味はある)

 
MrBrooklin:

素晴らしいこんな簡単なことなのに、いろいろな解決策があるんですね。ありがとうございます。

ウラジミールさん、ありがとうございます。

そして、もっと多くのパターンがある...。

#property script_show_inputs

enum EStateTime
{
   TimeOk=0/*достаточно времени*/,
   TimeFail/*НЕ достаточно времени*/
};
enum EStatePatience{
   PatienceOk=0/*достаточно терпения*/,
   PatienceFail/*НЕ достаточно терпения*/
};
enum EStateMoney{
   MoneyOk=0/*достаточно денег*/,
   MoneyFail/*НЕ достаточно денег*/
};
input EStateTime time = TimeOk;
input EStatePatience patience = PatienceOk;
input EStateMoney money = MoneyFail;

//+------------------------------------------------------------------+
void OnStart()
{
   if(Check(time) && Check(patience))
   {
      Print("я выучу язык MQL 5",(Check(money)?NULL:" и это не зависит от денег"));
   }
   else
   {
      Print("я НЕ выучу язык MQL 5");
   }
}
//---------------------------------------------------------------------
template<typename T>
bool Check(T condition){
   return condition==0;
}

そう、三項演算子も あるんだよ)

この道(理解し、書き方を知る)から、実は、開発者の道が始まるのです。IMHO

Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
  • www.mql5.com
В качестве первого операнда – "выражение1" – может быть использовано любое выражение, результатом которого является значение типа bool. Если результат равен , то выполняется третий операнд – "выражениеЗ". Второй и третий операнды, то есть "выражение2" и "выражениеЗ", должны возвращать значения одного типа и не должны иметь тип void. Результатом...
 
Реter Konow:
残念なことに、これは間違った学習方法であり、どこにも行き着くことができません。状態」とこの列挙はどう関係があるのでしょうか?それは、公平な競争の場におけるフィクションです。

今は、構文を練習するよりも、論理に従った方が正しいでしょう。論理的には、「その言語を学ぶか、学ばないか」という問いの結果は、それに関連するいくつかのパラメータを計算する関数によってのみ返されることが示唆される。この関数はyes/noの結果を返さなければならないので、bool型で宣言されています。if()の条件から直接関数を呼び 出すことができます。

if(Enough_time() && Enough_patience())Print("I will learn the language!");

else Print("I won't learn the language...");


では、機能の中身を考えてみましょう。

ピーターさん、こんにちは。必ずそうします!という問いかけがあっただけです。

"...制御問題:「十分な時間」-コンパイラの警告 なしにこの変数がどのような型に なるのか...。

そう答えようとしたのです。特にお手本を示していただき、ありがとうございました


ウラジミールさん、よろしくお願いします。

 
Valeriy Yastremskiy:

を拾っているのですから、当然コメントは不完全で、Aの 最初の変数はあるべき姿、いわば実行条件であり、2番目のaは、実際の姿です)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))()そして、そのためにinAがインスタンスを介して入力され、変更不能で、変数a ....そうですね、定数変数ではなく、静的変数か単なるテキスト型であるべきですが)))

でも、まだ意味はある)

なるほど、こだわりがあるのかもしれませんが、それでも、今の学生にとって列挙は余計なお世話です。カリキュラムの一貫性については、忘れてはならない。では、一気にクラスを書きましょう。 ))))
 
Реter Konow:
なるほど、いじわるかもしれませんが、それでも、今の学生には列挙は不要です。カリキュラムの一貫性について忘れてはならない。では、一気にクラスを書きましょう。 ))))

ダメダメダメダメ!!!(笑)。もう、頭の中がぐちゃぐちゃです!(笑)

ウラジミールさん、謹んで申し上げます。

 
MrBrooklin:

ピーターさん、こんにちは。確かに考えてみます!ただ、要は「質問された」ということです。

"...制御問題:「十分な時間」 -コンパイラの警告が 出ないように、この変数は何型に できるのか..."...

それを答えようとしたんです。


敬具 ウラジミール

はい、こんにちは。その通り、まさにその質問だったのですが、まだ正しく答えられていないのは、条件の内容からすると、文字列の型が正しくないからです。コンパイラはエラーメッセージや 警告を生成しませんが、条件の意味には欠陥があります。
 
MrBrooklin:

ダメダメダメダメ!!!(笑)。もう、頭の中がぐちゃぐちゃです!(笑)

敬具 ウラジミール

そういうことなんです。これで列挙や不要な構文が不要になりました。