新参者が聞く!? - ページ 23

 
Михаил:
longは変数型ですが、おかしいと繰り返します。

PositionGetInteger()はlong型を返すENUM_POSITION_TYPEの ような長い型に悩まされる必要はないのです。

とにかく、プログラマーは1回だけ型変換を行う。もっと短く書いたほうがいい。

ここでは、初心者のプログラマーにアドバイスをしてくれるのですが...。

 

Nextor257:

...

POSITION_TYPE_BUYの前に(long)が指定されているのはなぜですか?

...

これは、変数がその場で型を変更することです。

 
Dmitry Fedoseev:

PositionGetInteger()はlong型を返すENUM_POSITION_TYPEの ような長い型に悩まされる必要はないのです。

とにかく、プログラマーは1つの型変換を行う。もっと短く書いたほうがいい。

ここでは、初心者の方へのアドバイスも行っているそうで・・・。

その後に比較関数が実行されるため、不正確です。

 if(type==(long)POSITION_TYPE_BUY

また、POSITION_TYPEは長くないが

enum_position_type

識別子

商品説明

ポジションタイプ

購入

ポジションタイプ売り

販売する

 
Михаил:

間違っている、なぜならその後に比較対象が来るからだ。

また、POSITION_TYPEは長くないが

enum_position_type

識別子

商品説明

ポジションタイプ

購入

ポジションタイプ売り

販売する

うん...プログラミングの知識が深いんだね。
 
Dmitry Fedoseev:
うん...プログラミングの知識が豊富なんだね。

あなたには知識がないように見えるが、ただ野心があるだけだ。

enum_position_property_integer

識別子

商品説明

タイプ

POSITION_TIME

ポジションオープン時間

時分

ポジションタイムマスター

1970年01月01日からのポジションオープン時間(ミリ秒)。

位置時間更新

1970年01月01日からの位置変化の時間(秒)。

位置決め時間更新データ

1970年01月01日からの位置変化時間(ミリ秒)。

POSITION_TYPE

ポジションの種類

enum_position_type

POSITION_MAGIC

ポジションのマジックナンバー (ORDER_MAGIC 参照)

position_identifier

ポジション識別子は、新規に開設されたポジションに割り当てられるユニークな番号で、そのポジションが存続する限り変更されることはありません。ポジションを反転させても、ポジションの識別子は変わりません。

 
Михаил:

知識は全くないようですが、野心だけはあるようですね。

enum_position_property_integer

識別子

商品説明

タイプ

POSITION_TIME

ポジションオープン時間

時分

ポジションタイムマスター

1970年01月01日からのポジションオープン時間(ミリ秒)。

位置時間更新

1970年01月01日からの位置変化の時間(秒)。

位置決め時間更新データ

1970年01月01日からの位置変化時間(ミリ秒)。

POSITION_TYPE

ポジションの種類

enum_position_type

POSITION_MAGIC

ポジションのマジックナンバー (ORDER_MAGIC 参照)

position_identifier

ポジション識別子は、新規に開設されたポジションに割り当てられるユニークな番号で、そのポジションが存続する限り変更されることはありません。ポジションを反転させても、ポジションの識別子は変わりません。

PositionGetDouble()関数の場合

本の中を見ると、フィギュアがある」と言われるケースです。

まずはコンパイルしてみてください。

ENUM_POSITION_TYPE z=PositionGetInteger(POSITION_TYPE);

警告が出る。

1つの関数で、場合によって異なるタイプを作ることはできません。 どのような場合でも長くなります。そして、同じ関数が異なる型を返すと信じていましたか?そうですね...この掲示板では迷信に驚く人はいません、普通です・・・。

型欄のENUM_POSITION_TYPEは、すべての可能な戻り値が対応する列挙子にあることを意味します。

また、もっと注意していただきたいのは、上の表はPositionGetInteger()のことで、下に書いてあるPositionGetDouble()は全く関係ありません。

 

誰が「姿」を見ているのだろう・・・。

このように書きました。

ENUM_POSITION_TYPE pos_type = ENUM_POSITION_TYPE(PositionGetInteger(POSITION_TYPE));
 
Dmitry Fedoseev:

これは、その場でタイプチェンジを行うものです。

ありがとうございました。
 
Михаил:

その「姿」を誰が見ているのだろう・・・。

こんな風に書きました。

ENUM_POSITION_TYPE pos_type = ENUM_POSITION_TYPE(PositionGetInteger(POSITION_TYPE));

なぜPositionGetIntegerの前にENUM_POSITION_TYPEを 記述するのですか?なぜなら、あなたの信念によれば、識別子 POSITION_TYPE を持つ PositionGetInteger 関数は、すでに ENUM_POSITION_TYPE 型を返しているからです。

 
Dmitry Fedoseev:

なぜPositionGetIntegerの前にENUM_POSITION_TYPEを 記述するのですか?なぜなら、あなたの信念によれば、識別子 POSITION_TYPE を持つ PositionGetInteger 関数は、すでに ENUM_POSITION_TYPE 型を返すからです。

あなたはプログラミングの第一人者なんだから、自分で答え合わせをしてきなさい...。

そして、これは私の「信念」ではなく、「資料」なのです...。

しかし、PositionGetInteger() 関数は常にLONG型の値を返すので、INTRGERやLONGの「中身」がどうであったかは関係ないと思います。

開発者は、2つの関数を書くのを避けるために、このような方法をとりました。

したがって、位置の型(それはINTEGERです)を取得するには、私が書いたようにするのが正しいのです。

ENUM_POSITION_TYPE pos_type = ENUM_POSITION_TYPE(PositionGetInteger(POSITION_TYPE));