MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 406
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Değişken sayıda parametreli bir fonksiyon nasıl yazılır?
Bazı fonksiyon parametrelerinin başlangıç değerini ayarlayabilirsiniz (bu parametreler sonuncusu olmalıdır). Fonksiyon çağrılırken , ihtiyaca göre bu parametreleri ayarlayıp ayarlayamamak mümkün olacaktır. Parametreler açıkça ayarlanmazsa, başlangıç değerlerini alırlar.
İkinci seçenek aşırı yüktür. Sadece aynı ada sahip, sadece farklı tipte/parametre sayısında bir fonksiyon yazın.
Örneğin?
İşleve birkaç parametre iletmem gerekiyor, ancak farklı durumlarda önceden bilinen farklı bir sayı iletmem gerekiyor
si'de, örneğin, bu şekilde uygulanırve sonra bu parametreleri fonksiyonda işleyin
int işlev(int a, int b, ...)
Meta düzenleyicideki araç çubuğuna "İptal" düğmesi koymanın bir yolu var mı?
(Ctrl+Z uygulayan)
İşleve birkaç parametre iletmem gerekiyor, ancak farklı durumlarda önceden bilinen farklı bir sayı iletmem gerekiyor
si'de, örneğin, bu şekilde uygulanırve bu parametreleri fonksiyonda daha fazla işleyin
int işlev(int a, int b, ...)
Bir diziyi ve diziden alınacak parametre sayısını iletin
Bir diziyi ve diziden alınacak parametre sayısını iletin
Yani orada aktarmam gereken sayılar düzensizdir, yani evrensel oluşturulamaz.
En azından soyut olmayan bir örnek verin.
peki, şöyle:
Duruma bağlı olarak (eğer DEĞİL, ancak aslında bu sayıları kendim yazıyorum)
a = işlev(rakam, 10, 18, 42); veya a = işlev(rakam, 11, 18, 42, 15, 13); veya a = işlev(rakam, 5);
çift işlev(int num, ????)
{
return("bu parametrelerin toplamı"/sayı);
}
peki, şöyle:
Duruma bağlı olarak (eğer DEĞİL, ancak aslında bu sayıları kendim yazıyorum)
a = işlev(rakam, 10, 18, 42); veya a = işlev(rakam, 11, 18, 42, 15, 13); veya a = işlev(rakam, 5);
çift işlev(int num, ????)
{
return("bu parametrelerin toplamı"/sayı);
}
Peki, o zaman, ilk akla gelen ve yukarıda önerildiği gibi - fonksiyona bir çift dizi iletin ve fonksiyonda, geçen dizinin değerlerinden gerekli değerleri hesaplayın - ayrıca öğrenebilirsiniz. sayıların sayısı ( dizi boyutu ) ve buna göre oranlarını hesaplayın. Herhangi bir dizi boyutu için yalnızca hesaplama formülü aynı kalacaktır. Formülü değiştirecekseniz, sadece dizi bu tür ihtiyaçlar için çalışmayacaktır, bir parametre daha yapmanız gerekecektir - bu, istenen hesaplama formülünü gösterecektir. Örneğin, formülün türünü (ENUM_TYPE_CALCULATED) belirten bir numaralandırma iletebilir ve bu numaralandırmanın geçirilen değerine göre, örneğin CALCULATE_SUMM, (bu örnekte) basitçe iletilen dizinin tüm değerlerinin toplamını hesaplayabilirsiniz. .
Yani orada aktarmam gereken sayılar düzensizdir, yani evrensel oluşturulamaz.
Bu tam teşekküllü bir cevap, ancak buna tepki yok ...
çağrılırken , ihtiyaca göre bu parametreleri ayarlayıp ayarlayamamak mümkün olacaktır. Parametreler açıkça ayarlanmazsa, başlangıç değerlerini alırlar.
İkinci seçenek aşırı yüktür. Sadece aynı ada sahip, sadece farklı tipte/parametre sayısında bir fonksiyon yazın.
Bu tam teşekküllü bir cevap, ancak buna tepki yok ...
Küme ve sayı sayısı önceden bilinmiyorsa, her yeni küme için işlevleri stoklayamazsınız.