Acemi soruyor! - sayfa 26

 
Alexander Bereznyak :

bunlar senin sözlerin, uyarı yok ama aslında

hangi dünyada yaşıyorsun, ne içiyorsun, paylaş

Onlar. Kodum hakkında benim için o kadar cesurca iddia ediyorsun ki görmedin mi? Mantar yanlış mı?
 
Dmitry Fedoseev :
Onlar. Kodum hakkında benim için o kadar cesurca iddia ediyorsun ki görmedin mi? Mantar yanlış mı?

her şeyi anladım, aptal değil, özellikle kişisel olarak MQ'dan uyarısız özel bir derleyiciniz var

Not: Ben de istiyorum amca oynamama izin ver

 
Михаил :

Verdiğiniz kod doğru değil!

Bunun gibi olmalı:

 ENUM_POSITION_TYPE pos_type = ENUM_POSITION_TYPE ( PositionGetInteger ( POSITION_TYPE ));

Doğru değil, çünkü bir karşılaştırma var:

 if (type==( long ) POSITION_TYPE_BUY


hayır, doğru değil.

onunla hiçbir ilgisi yok.

Kod yazarı az önce onu güvenli bir şekilde oynattı veya bir yerden bir yazı tipini kopyalayıp yapıştırdı.


aslında

kod

     long type= PositionGetInteger ( POSITION_TYPE );
     if (type== POSITION_TYPE_BUY ) return ;

herhangi bir hata veya uyarı vermiyor.

MQL, karşılaştırırken açık döküm gerektirmez


not. Tartışmaya başlamadan önce varsayımlarınızı test edin.

 

çok kötü bir örnek, karşılaştırmayı kaçırdınız ve ardından bir hatayla karşılaştınız:

 
o_O :

not. Tartışmaya başlamadan önce varsayımlarınızı test edin.

Önerilerde bulunurken sonuçları düşünün
 
o_O :


hayır, doğru değil.

onunla hiçbir ilgisi yok.

Kod yazarı az önce onu güvenli bir şekilde oynattı veya bir yerden bir yazı tipini kopyalayıp yapıştırdı.


aslında

kod

herhangi bir hata veya uyarı vermiyor.

MQL, karşılaştırırken açık döküm gerektirmez


not. Tartışmaya başlamadan önce varsayımlarınızı test edin.

o_o!

Doğru yanlış....

Görünüşe göre başkalarının yazdıklarını hiç okumuyorsun!

Programlama kurallarına göre:

BİR FONKSİYONUN ALICI DEĞİŞKENİ, BU FONKSİYONUN DÖNÜŞ TÜRÜ İLE AYNI TÜRDE OLMALIDIR!

TÜMÜ!

Bu düşünceye son vermenin zamanı geldi.

Neden böyle yazmadın:

 int type= PositionGetInteger ( POSITION_TYPE );

Evet, çünkü işlevin her zaman LONG döndürdüğünü biliyorsunuz.

Ve yardım, PositionGetInteger() işlevinin POSITION_TYPE bağımsız değişkeni için dönüşün

ENUM_POSITION_TYPE değeri, LONG değil

Ve eğer tip dökümü yapmak istiyorsanız, şöyle yazın:

 int type = int ( PositionGetInteger ( POSITION_TYPE ));

 if (type== POSITION_TYPE_BUY ) return ;

Derleyicinin hata atmaması doğru yazdığın anlamına gelmez!

Derleyicinin "özgürlükleri" hakkında konuşuyor ve sadece! (LONG ve INTEGER'ı karşılaştırmanıza izin verir)

Bu durumda, DOĞRU bunu yapmanız gerekir:

 ENUM_POSITION_TYPE pos_type = ENUM_POSITION_TYPE ( PositionGetInteger ( POSITION_TYPE ));
 
Alexander Bereznyak :

çok kötü bir örnek, karşılaştırmayı kaçırdınız ve ardından bir hatayla karşılaştınız:

Bir yerlerde zorlama ile daha fazlasını gördün mü? farklı bir konuşma konusuna atıfta bulunarak tezlerinizi haklı çıkarmayın.

sadece karşılaştırma hakkında konuşma ve sadece bu durumda uzun - numaralandırma.


Cevabın tamsayı ile verildiği soru doğrudan olmasına rağmen, zaten aşılmaz düşünce ormanına girdiniz.

Sonraki257 :

Anlatın bu nasıl bir kıyaslama anlayamadım?

if(type==(uzun) POSITION_TYPE_BUY )

POSITION_TYPE_BUY'dan önce neden (uzun) var?


Dmitry Fedoseev :

Bu tür değişiklik, anında yapılan bir değişikliktir.

 
Dmitry Fedoseev :

ENUM_POSITION_TYPE ve ENUM_POSITION_TYPE yerine uzun ve uzun

36 karakter (ve hatta büyük harflerle) yerine 8 karakter (gözünüz kapalı yazabilirsiniz)! Ayrıca, kendi içinde bir anlam ifade etmeyen çeşitli bilgiler. Bu iyi bir programlama stili değil - hem gereksiz yazma hem de gereksiz bilgiler.

Bu durumda, Mikhail kesinlikle haklıdır (Mikhail'in programlama stilindeki tüm iğrenmeme rağmen).

Ve buradaki nokta olası uyarılarda değil, hatta karakter sayısında daha fazla, ancak güçlü yazımda . ENUM_POSITION_TYPE numaralandırması benzersiz bir veri türüdür. Ne uzun ne de int, yani ENUM_POSITION_TYPE. Ve bunu ENUM_POSITION_TYPE olarak kullanmanız gerekiyor, başka bir şey değil. Ve numaralandırma uzun süre yazılırsa, otomatik tamamlama zaten üçüncü karakterde açılır ve bu hiç sorun değildir. Ve sorun uzun kullanmaktır, çünkü hemen hemen her şey olabilir, ama ENUM_POSITION_TYPE değildir.

o_o :

MQL, karşılaştırırken açık döküm gerektirmez

Başta ne gerektiriyorsa onu yazdım ama sonra "karşılaştırma yaparken" kelimesini gördüm. Gerçekten de, MQL bunu dolaylı olarak yaptığı için karşılaştırma yaparken açık bir döküm gerekli değildir. Ve bunu hiç yapmasa daha iyi olurdu, çünkü sonuç genellikle belirsizdir. Ancak diğer normal, kesin olarak yazılmış dillerde, açık tip döküm her zaman gereklidir.

Not Bir süre, Mikhail yetkin bir cevap verdi, ancak burada bile alışkanlıktan çürümeye başladılar. Ama boşuna, çünkü bu durumda o haklı.