OOP, mql5'te şablonlar ve makrolar, incelikler ve kullanım teknikleri - sayfa 3
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
Onu yaratmanın bir yolunu buldun.
Bu sınıfın en az 1 örneği oluşturulmadan önce başlatma aşamasında bir sınıf statik alanı kullanmaya çalışıyorsunuz. Bana göre bu bir sapkınlık... İşte her şey yolunda gidiyor:
Kapsülleme ilkesi genellikle bu tür alanların herkese açık değil özel olması gerektiğini önerir.Statik alan, sınıfın örneklerinin varlığına bağlı olmamak için statik bir alandır. Ancak önce sınıfın bir örneğini oluşturmak istiyorsanız - tamam, oluşturun, ancak yalnızca işlevin içinde. Ve ondan bu alanı isteyin (en azından doğrudan, en azından bir yöntemle) - sonuç yine aynı olacaktır.
Bir şeyi karıştırıyorsun.
Hayır, hiçbir şeyi karıştırmıyorum.
Önce global değişkenler, sonra statik değişkenler, sonra kodda göründükleri gibi yerel değişkenler.
Değişkenlerin işlevler tarafından başlatılmasını önlemek için belgelerin önerisini ihlal eden bu örnektir. Geliştiriciler için böyle bir uyarı yazmak, nerede mümkün olduğunu ve nerede imkansız olduğunu açıklamaktan daha kolaydı.
Statiği örneğinizden kaldırın ve istediğiniz sonucu alın.
Hayır, hiçbir şeyi karıştırmıyorum.
Önce global değişkenler, sonra statik değişkenler, sonra kodda göründükleri gibi yerel değişkenler.
Değişkenlerin işlevler tarafından başlatılmasını önlemek için belgelerin önerisini ihlal eden bu örnektir. Geliştiriciler için böyle bir uyarı yazmak, nerede mümkün olduğunu ve nerede imkansız olduğunu açıklamaktan daha kolaydı.
Örneğinizden statiği kaldırın ve istediğiniz sonucu alın.
Gerekli değil, ama benim için daha uygun. Bu bir sabitse (ve genel görünürlükte, kod okuryazarsa çoğunlukla sabitler bildirilir), o zaman burada başka seçenek yoktur.
Sarı ile vurgulanan her şey için tek bir sorum var: NEDEN? Sorunun nasıl çözüleceğini zaten buldum.SONRA, zaten yığdığınız o bahçeyi çitle çevirmemek için.
"Belge önerisi")) Seninle dalga geçiyorum. Hala özü anlamadın mı? Dilde hata. Geliştiricilerin kendileri bunun hakkında konuşur ve size bu hatayla karşılaşmamak için teflerle nasıl düzgün dans edeceğinizi açıklar. Bunu, bu hatayı bir kez ve herkes için unutacak şekilde yaptım.
Bir işlevi olan bir şeyin değerini başlatamazsınız. Gerçekten istesen bile. Gerçekten, belli değil mi?
Statik alan, sınıfın örneklerinin varlığına bağlı olmamak için statik bir alandır. Ancak önce sınıfın bir örneğini oluşturmak istiyorsanız - tamam, oluşturun, ancak yalnızca işlevin içinde. Ve ondan bu alanı isteyin (en azından doğrudan, en azından bir yöntemle) - sonuç yine aynı olacaktır.
Öyleyse hala prosedürel veya nesne yönelimli programlamamız var mı? Neden birdenbire, başlatmadan önceki aşamada, tiplenmiş nesnelerle ilgili olarak sınıflarla ilgili olmayan işlevleri yerine getiriyor. Cevabın "çünkü istiyorsun" olduğunu anlıyorum. Ama geliştirici ben olsaydım, her şeyi iptal etmek ve bu belirli davranışı düzeltmek için koşmak için acele etmezdim, çünkü bu oldukça marjinal bir mimaridir ve ayrıca, sorun sınıfın bir örneğini oluşturarak kolayca çözülür. Elbette bir fonksiyonun içinde değil.
SONRA, zaten yığdığınız o bahçeyi çitle çevirmemek için.
Bir işlevi olan bir şeyin değerini başlatamazsınız. Gerçekten istesen bile. Gerçekten, belli değil mi?
Öyleyse hala prosedürel veya nesne yönelimli programlamamız var mı? Neden birdenbire, başlatmadan önceki aşamada, tiplenmiş nesnelerle ilgili olarak sınıflarla ilgili olmayan işlevleri yerine getiriyor. Cevabın "çünkü istiyorsun" olduğunu anlıyorum. Ama geliştirici ben olsaydım, her şeyi iptal etmek ve bu belirli davranışı düzeltmek için koşmak için acele etmezdim, çünkü bu oldukça marjinal bir mimaridir ve ayrıca, . Elbette bir işlevin içinde değil .
Onlar. anladığım kadarıyla global değişkenlerin toplu kullanımının destekçisisiniz. O zaman sen ve ben birbirimizi anlamamız pek olası değil.
Ayrıca, işlevin kendisi şablonlanabilir. Ve oluşturulan örnek buna göre aynı tiple parametrelendirilmelidir:
Senin eylemlerin?