Singleton modelini MQL4'te uygulamak mümkün mü? - sayfa 5

 
sergeev :

bu nedir??

Bunu sen istedin. Extern değiştiricili sınıf örneği.. Tabii ki saçma. Ancak..

İşte ondan bahsediyorsun. Buna pek gerek görmedim.

sergeev :

ve hariciyi kader değil yapmak için bir yapı örneği?

Extern'in bununla ne ilgisi var anlamadım? Diğer sınıflara dahil edilebilmesi için bazı verileri herkese açık hale getirmem gerekmiyor. Ayrıca bu değişkenler programın yürütülmesi sırasında değerlerini kaybetmemelidir, yani. statik olun. Bana dıştan bahset. Ne için?

 
hoz :

Bunu sen istedin. Extern değiştiricili sınıf örneği.. Tabii ki saçma. Ancak..

hiç derlemedin mi


Paylaşılacak bazı verileri "yapmaya" ihtiyacım yok,
nasıl ihtiyacın var?
 
sergeev :

hiç derlemedin mi

kontrol etmedim. Çünkü gereken henüz hayata geçirilmemiştir.

sergeev :

nasıl ihtiyacın var?

İhtiyacım olanı tekrarlıyorum... Programın yürütülmesi sırasında üyelerinin değerlerini koruması gereken bir yapı var, ancak bu yapıyı kullanan herhangi bir sınıfın herhangi bir yöntemi çağrıldığında, üyeler değiştirilebilir. Statik olmaları gerektiğini anlıyorum. Bu üyeler tek nüsha halinde olmalıdır. Bu yapının üyeleri birçok sınıf tarafından ve EA'nın kendisi tarafından kullanılacaktır.

Şöyleydi:

 struct Symbol_Properties
{
   static datetime     gdt_Quote;           // Время поступления последней котировки
   static double       gda_Price [ 2 ];       // Текущие рыночные цены (0 - Bid, 1- Ask)
   static double       gd_Spread;           // Размер спреда в пунктах
   static double       gd_Swap;             // Своп
   static double       gd_Comission;         // Комиссия
   static double       gd_Pt;               // Величина одного пункта
   static int          gi_Digits;           // Количество знаков в цене после запятой
   static int          gi_StopLevel;         // Минимально-допустимый уровень стоп-лосса/тейк-профита в пунктах
   static int          gi_FreezLevel;       // Уровень заморозки ордеров в пунктах
};

Symbol_Properties::gdt_Quote = 0 ;
Symbol_Properties::gda_Price [ 2 ] = { 0.0 , 0.0 };
Symbol_Properties::gd_Spread = 0 ;
Symbol_Properties::gd_Swap = 0 ;
Symbol_Properties::gd_Comission = 0 ;
Symbol_Properties::gd_Pt = 0 ;
Symbol_Properties::gi_Digits = 0 ;
Symbol_Properties::gi_StopLevel = 0 ;
Symbol_Properties::gi_FreezLevel = 0 ;

Ancak bu durumda, bu tür değişkenlere erişmek elverişsizdir, çünkü "isim" uzun. Onlar:

Symbol_Properties::gd_Pt = 0 ;

Nasıl uygulanır?

 
hoz :

İhtiyacım olanı tekrar ediyorum... Programın yürütülmesi sırasında üyelerinin değerlerini koruması gereken bir yapı var, ancak bu yapıyı kullanan herhangi bir sınıfın herhangi bir yöntemi çağrıldığında, üyeler değiştirilebilir. Statik olmaları gerektiğini anlıyorum. Bu üyeler tek nüsha halinde olmalıdır. Bu yapının üyeleri birçok sınıf tarafından ve EA'nın kendisi tarafından kullanılacaktır.

oluşturulan tek değişkene erişmedeki sorun nedir?

 

Ve bunlara YAPI ADI.ÜYE ADI ?

Ancak programın çalışması sırasında bu değişkenin mevcut değerini kaybetmeyeceğine dair bir garanti var mı?

 
hoz :

Ve bunlara YAPI ADI.ÜYE ADI ?

değişken adı. üye adı.


Ancak programın yürütülmesi sırasında bu değişkenin mevcut değerini kaybetmeyeceğine dair bir garanti var mı?

uh shta o_o?

Expert Advisor'da çok iş parçacıklı yürütmeniz var mı?

kaybetmek ne demek? oraya ne yazarsan o olur, neden kaybolsun ki?

 
в чем проблема обращаться к единственной созданной переменной?

Herkesin kendi illüzyonları dünyasında yaşama hakkı vardır,

ancak kullanıcı hoz dünyasını yok etmek bir şekilde alışılmadık derecede zor

çünkü kafasının içine girip orada ne hayal ettiğini bir daha anlayamazsın.

"mevcut değerini kaybetmeyecek " - değişkenlerin değerlerini kaybetmek için yaratıldığını mı düşünüyorsunuz?

Gerçekte ne var:

Değişkenlerin kapsamı , saklama süresi, bağlantısı vardır.

Ne olduğunu öğrenin: Hangi değişkenin neye sahip olduğunu, nerede oluşturulduğunu, ne zaman yok edildiğini, nereye ve ne zaman aktarılabileceğini görebilirsiniz.

Kullanım ömrü hakkında kısaca (depolama süresi):
statik (tüm işlevlerin dışında veya statik belirteçle bildirilen değişken) - ölüm zamanı = program sonlandırma

otomatik (fonksiyon içinde bildirilen değişken) - ölüm zamanı = oluşturulduğu fonksiyondan çıkış

dinamik (yeni anahtar kelimeyle oluşturulan değişken) - ölüm zamanı = silme anahtar sözcüğünü kullanma

 
sergeev :

Expert Advisor'da çok iş parçacıklı yürütmeniz var mı?

kaybetmek ne demek? oraya ne yazarsan o olur, neden kaybolsun ki?


Belgeleri burada açar ve şunu görün:

 //+------------------------------------------------------------------+
//| Класс "Анализатор текстов"                                       |
//+------------------------------------------------------------------+
class СParser
  {
public :
   static int         s_words;
   static int         s_symbols;
   //--- конструктор и деструктор
                     Parser( void );
                    ~Parser( void ){};
  };
...
//--- инициализация статических членов класса Parser на глобальном уровне
int CParser::s_words= 0 ;
int CParser::s_symbols= 0 ;

Bir sınıfın veya yapının değişkenleri programın yürütülmesi sırasında değerlerini kaybetmiyorsa, neden burada statik olarak bildiriliyor?

Kamusal kesimdeler, yapıda olduğu gibi diyebiliriz...

 
hoz :

Belgeleri burada açar ve şunu görün:

Bir sınıfın veya yapının değişkenleri programın yürütülmesi sırasında değerlerini kaybetmiyorsa, neden burada statik olarak bildiriliyor?

Kamusal kesimdeler, yapıda olduğu gibi diyebiliriz...


Sonra... Size verilen linkteki ikinci cümleyi okuyun.

Bir sınıftaki statik, bir işlevdeki statikten biraz farklı bir anlama sahiptir.

 
hoz :

Bir sınıfın veya yapının değişkenleri programın yürütülmesi sırasında değerlerini kaybetmiyorsa, neden burada statik olarak bildiriliyor?

Kamusal kesimdeler, yapıda olduğu gibi diyebiliriz...


Ya ağır zekalısın ya da ağır zekalısın, direkt olduğum için üzgünüm, siyah beyaz yazılmış:

Örneğin, metinleri ayrıştırmak için bir CParser sınıfımız var ve işlenen toplam kelime ve karakter sayısını saymamız gerekiyor . Gerekli sınıf üyelerini static olarak bildirmek ve bunları global düzeyde başlatmak yeterlidir . Ardından, sınıfın tüm örnekleri, işlem sırasında ortak sözcük ve karakter sayaçlarını kullanır .

Şunlardan en az bir kez bahsediliyor:

program yürütme sırasında sınıf veya yapı değişkenleri değerlerini kaybeder

Burada, OOP ilkelerini koruyarak ve global değişkenler yaratmayarak, statik bir sınıf üyesi kullanarak oradaki bazı kelimelerin sayısını sayabileceğimizi söylüyor,

o ( statik bir sınıf üyesi) tek bir örnekte oluşturulur ve bu sınıfın oluşturulan nesnelerinin sayısına bağlı değildir.

Neden: