Hatalar, hatalar, sorular - sayfa 2563

 
Andrey Barinov :

?

örnekte statik bir değiştiricisi var, kaldırırsanız derleyici beklendiği gibi bir uyarı verecektir.

statiğe , kodun herhangi bir bölümünden bağlam çözümleme operatörü aracılığıyla erişilebilir ... genel olarak, herhangi bir ! (Kapsamını hatırlamıyorum, uzun zamandır kontrol etmedim, ancak büyük olasılıkla kodun en üstünde açıklanmış gibi global olacaktır, yani statik yöntemin nerede olduğu önemli değil / alan bildirildi)

 
Igor Makanu :

statiğe , kodun herhangi bir bölümünden bağlam çözümleme operatörü aracılığıyla erişilebilir ... genel olarak, herhangi bir ! (Kapsamını hatırlamıyorum, uzun zamandır kontrol etmedim, ancak büyük olasılıkla kodun en üstünde açıklanmış gibi global olacaktır, yani statik yöntemin nerede olduğu önemli değil / alan bildirildi)

Uzun zamandır böyle :)

Aynı kuralların tümü (özel, korumalı, genel) statik için geçerlidir, yalnızca bir .

Burada bariz bir bug var.

 
Andrey Barinov :

Uzun zamandır böyle :)

Bilmiyorum, kesin olarak söyleyebilirim ki admin @Ilyas birkaç ay önce statik başlatma sırasını açıklamış ve bir MQL programı başlatılırken statik yöntemlerin ve statik alanların global değişkenlerle birlikte başlatıldığından bahsetmişti.. . ardından mesajlarını arayın

Andrey Barinov :

Aynı kuralların tümü (özel, korumalı, genel) statik için geçerlidir, yalnızca bir .

Burada bariz bir bug var.

Tartışmaya hazır değilim ve istemiyorum, ancak statik yöntemlerin davranışı yardım metnine karşılık geliyor

peki, argümanlarla onaylamanın gerekli olmadığını düşündüğüm IMHO - MQL, programların C # davranışına doğru büyük adımlarla ilerliyor, benzer bir durum var, sanki bir programcı bağlam çözümleme operatörünü kullanmaya karar vermiş gibi, daha sonra, sınıftaki veri bütünlüğü ihlallerini tespit etmek için derleyicinin yardımını kasten reddeder, bağlam çözümleme operatörü olmadan yöntemleri ve alanları elde etmenin klasik yolları vardır.


UPD: yavaş yavaş MQL kitaplığımı yeniden yazmaya karar verdim, popüler MQL kodlarında ayrılmış kelimelerin adlarıyla eşleşen yöntemlerin ve alanların adlarını görünce korkuyla yazdığımı fark ettim ... IMHO bu da doğru bir adım bağımlılıkları "parçalarken" derleyicinin yardımını reddetmek. ... bunun gibi bir şey)))

 

Igor Makanu :

sanki programcı bağlam çözümleme operatörünü kullanmaya karar vermiş, ardından sınıftaki veri bütünlüğü ihlallerini tespit etmek için derleyicinin yardımını kasten reddetmiş gibi, bağlam çözümleme operatörü olmadan yöntemler ve alanlar elde etmenin klasik yolları vardır.

uh, sanırım OOP içtin, ara ver ve sonra taze bir kafayla. Bağlam izin operatörü görünürlüğü tanımlar, ancak erişimi hiçbir şekilde etkilemez.

 
TheXpert :

uh, sanırım OOP içtin, ara ver ve sonra taze bir kafayla. Bağlam izin operatörü görünürlüğü tanımlar, ancak erişimi hiçbir şekilde etkilemez.

Ne içeceğime ve ne zaman dinleneceğime kendim karar veririm)))

Not: Herhangi bir dilde hafızanın içeriğine erişimi olan her zaman bir çok hile vardır, habr Orada yorumlarda ya python'a düzenli rendeler okudum. derleyiciler, her zaman girmemeniz gereken yerlere girebilirsiniz)))

 
Igor Makanu :

Bilmiyorum, kesin olarak söyleyebilirim ki, admin @Ilyas birkaç ay önce statik başlatma sırasını açıklamış ve bir MQL programı başlatılırken statik yöntemlerin ve statik alanların global değişkenlerle birlikte başlatıldığından bahsetmişti.. . ardından mesajlarını arayın

Tartışmaya hazır değilim ve istemiyorum, ancak statik yöntemlerin davranışı yardım metnine karşılık geliyor

" private - yalnızca bu sınıfın yöntemlerinden sınıf değişkenlerine ve yöntemlerine erişime izin verir. "

"Yalnızca" kelimesi nerede net değil?

OnStart, örneğe göre A sınıfı bir yöntem değildir.

 
Aliaksandr Hryshyn :

" private - yalnızca bu sınıfın yöntemlerinden sınıf değişkenlerine ve yöntemlerine erişime izin verir. "

"Yalnızca" kelimesi nerede net değil?

OnStart, örneğe göre A sınıfı bir yöntem değildir.

bu özel değiştiriciyle ilgili değil , statik değiştiriciyle ilgili - testler yapın ve MQL'de statikin nasıl davrandığını görün

 
Igor Makanu :

Bilmiyorum, kesin olarak söyleyebilirim ki admin @Ilyas birkaç ay önce statik başlatma sırasını açıklamış ve bir MQL programı başlatılırken statik yöntemlerin ve statik alanların global değişkenlerle birlikte başlatıldığından bahsetmişti.. . sonra onun mesajlarında arama yapın

Tartışmaya hazır değilim ve istemiyorum, ancak statik yöntemlerin davranışı yardım metnine karşılık geliyor

peki, argümanlarla onaylamanın gerekli olmadığını düşündüğüm IMHO - MQL, programların C # davranışına doğru büyük adımlarla ilerliyor, benzer bir durum var, sanki bir programcı bağlam çözümleme operatörünü kullanmaya karar vermiş gibi, daha sonra, sınıftaki veri bütünlüğü ihlallerini tespit etmek için derleyicinin yardımını kasten reddeder, bağlam çözümleme operatörü olmadan yöntemleri ve alanları elde etmenin klasik yolları vardır.


UPD: yavaş yavaş MQL kitaplığımı yeniden yazmaya karar verdim, popüler MQL kodlarında ayrılmış kelimelerin adlarıyla eşleşen yöntemlerin ve alanların adlarını görünce korkuyla yazdığımı fark ettim ... IMHO bu da doğru bir adım bağımlılıkları "parçalarken" derleyicinin yardımını reddetmek. ... bunun gibi bir şey)))

https://pikabu.ru/story/nevozmozhno_tak_nevozmozhno_2129852
 

?

garip bir durum, sınıf dışındaki her şey uzun süredir statik ile çalışıyor. ve ben burada çarmıha geriliyorum .... eğlence için, kodu kendiniz için yeniden oluşturun:

 int print( int value )
{  Print( value , ":" ,__FUNCTION__); 
 return ( value );
}
class A
{
private :
   static int         a1;
protected :
   static int         a2;
public :
   static int         a3;

};
//+------------------------------------------------------------------+
static int A::a1 = print( 1 );
static int A::a2 = print( 2 );
static int A::a3 = print( 3 );

//+------------------------------------------------------------------+
void OnStart()
{}
//+------------------------------------------------------------------+

Bir nesne örneği görüyor musunuz? ... ve MQL'de ;)

Not: ve referans düzeyinde ... bana ne iddia ediyor?

https://www.mql5.com/ru/docs/basis/oop/staticmembers

Sınıf üyelerinin statik olarak bildirilememesi, bu verilerin programın global düzeyinde bildirilmesi ihtiyacına yol açacaktır. Bu, veriler ve sınıfı arasındaki ilişkiyi bozar ve ayrıca ana OOP paradigması ile - veri sınıfındaki kombinasyon ve bunları işleme yöntemleriyle - tutarsızdır. Statik üye, tek bir örneğe özgü olmayan sınıf verilerinin sınıf kapsamında bulunmasına izin verir.