OOP, mql5'te şablonlar ve makrolar, incelikler ve kullanım teknikleri - sayfa 6
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
İşte geliyoruz
İşte bunu nasıl yapacağız.
Statik bir değişken bir sabite başlatılırsa, bu başlatma daha önce olduğu gibi global başlatma adımında gerçekleşir.
Aksi takdirde (bir çağrı veya değişken ile başlatma), ilk çağrıda statik bir değişken başlatılacaktır (C++'daki gibi olacaktır), böyle bir çağrının kendisi örtük bir global değişken / flag ile bir koşula sarılacaktır, örneğin
MQL kodu için:
Aşağıdaki sözde kod üretilecek
Yine de onları bir şekilde fonksiyonda ayırmanız gerekiyor.
Mutlaka ve her zaman değil. Şubeyi çöpe atmamak için örnek vermeyeceğim.
İşte bunu nasıl yapacağız.
Evet böyle bir şey. Çünkü MQL'de tam teşekküllü OOP yoktur . Ayrıca düzenli olarak bildirdiğim, ancak boşuna olmayan bir sürü hata. Ve böceklere karşı koltuk değnekleriyle kendinizi savunmanız gerekiyor, ne yapabilirsiniz?
Kafamı tamamen karıştırdın. Eğer ... sözlerinizi okuyun
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri
Alexey Navoykov , 2019.01.25 11:44
Parametreler farklı türlerdeyse, karşılık gelen türlerle birkaç aşırı yüklenmiş yöntem yapmak mantıklıdır. Yine de onları bir şekilde fonksiyonda ayırmanız gerekiyor. Bu nedenle, yüzü olmayan bir tip, yani. yanlışlıkla herhangi bir şeyi iletebilir ve kütüphanenin içinde vızıldamayan bir derleme hatası alabilirsiniz. Ya da belki bile alamam, ki bu iki kat iyi değil)
Kısacası, tam teşekküllü OOP'de şablon işlevleri bir koltuk değneğidir (nadir istisnalar dışında)
MQL'de, OOP ile her şey yolundadır, eğer çoklu kalıtım eklenirse ( en azından arayüzler için, aksi takdirde mevcut formlarında tamamen işe yaramazlar ), o zaman genellikle ideal olacaktır.
Yani arayüzler normal OOP'nin temelidir. Ve aynı zamanda MQL'de her şeyin yolunda olduğunu söylüyorsunuz.
Yani arayüzler normal OOP'nin temelidir. Ve aynı zamanda MQL'de her şeyin yolunda olduğunu söylüyorsunuz.
Normal OOP'nin temeli, arayüzler değil, polimorfizmdir. Arayüzler, tanımlanmış bir sınıf yapısının temelidir. Genel olarak bu konular hakkında konuşmayı çok isterdim ama korkarım bu konu bunun için değil.
Normal OOP'nin temeli, arayüzler değil, polimorfizmdir. Arayüzler, tanımlanmış bir sınıf yapısının temelidir. Genel olarak bu konular hakkında konuşmayı çok isterdim ama korkarım bu konu bunun için değil.
Neden, şube oldukça uygun. MQL dilinin özelliklerini tartışıyoruz ve çoklu kalıtımın olmaması oldukça önemli bir özellik )
Tamam, elbette temel polimorfizmdir, ancak ayrı arayüzler olmadan - kullanımı uygun değildir. Bu genellikle nesnelerin arayüzler olarak değil, şablon argümanları olarak iletilmesi gerektiği gerçeğine yol açar.
Burada birden çok arayüzü simüle etme versiyonumu tanımladım. Buna göre, sınıfım şöyle bildirilebilir:
Neden, şube oldukça uygun. MQL dilinin özelliklerini tartışıyoruz ve çoklu kalıtımın olmaması oldukça önemli bir özellik )
Tamam, elbette temel polimorfizmdir, ancak ayrı arayüzler olmadan - kullanımı uygun değildir. Bu genellikle nesnelerin arayüzler olarak değil, şablon argümanları olarak iletilmesi gerektiği gerçeğine yol açar.
Burada birden çok arayüzü simüle etme versiyonumu tanımladım. Buna göre, sınıfım şöyle bildirilebilir:
Bana göre, her şey o kadar da kötü değil. Bence aynı C# içinde çok fazla temel ana arabirim yok (C# uzmanı değilim), bu nedenle yöntemleri tek bir temel üst sınıfa indirgenemez ve ardından herhangi biri tarafından miras alınamaz.
not Birden fazla IMHO uygulamak için <<<<>>>> gibi yapılar aracılığıyla bu bir şekilde tek bir yerden olur. İşlevleri operatörler aracılığıyla yapmak daha iyidir, örneğin, a==b a.compareto( b ) öğesini çağırır, a[comparer]==b Comparer.compare(a,b) öğesini çağırır, vb.