Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Una macro e una funzione in linea sono effettivamente cose diverse. Ma non è questo che intendo. Ecco un esempio in cui i valori degli argomenti sono sconosciuti al momento della compilazione
Nel primo caso, il codice deve essere incollato nella funzione corrente (suppongo) e nel secondo caso, la funzione viene chiamata con parametri passati attraverso lo stack (suppongo). Ma ai fini dell'ottimizzazione, il compilatore può effettivamente implementare anche la seconda variante attraverso la sostituzione. È così? Non lo so. Ecco perché ho chiesto.
L'oggetto ellisse viene evidenziato con il mouse solo se si clicca sui punti di ancoraggio.
È un bug o una caratteristica? È implementato in modo molto scomodo.
Это что, юмор такой чёрный?
1. Извини, - бред. Я понимаю, тут паранойя в моде, и является ломовым аргументом за "почему так не надо делать". Никакой опасности не вижу в упор. Смотрел внимательно, если чё. Любое имя, в конечном счёте есть ссылка. Индексация есть обычное расширение понятия имени. Не более. Давай запретим присваивание вообще. В целях безопасности. Ссылки же крайне опасны так?
2. Духу объектно-ориентированного программирования, при такой логике, яростно противоречат С++, С#, Делфи, пара дюжин менее популярных языков, в которых индексаторы совершенно нормально работают и справа и слева. Причём здравому смыслу и моему духу это почему-то не противоречит.
Индексаторы делаются для связи с внешней средой. Их функция именно интерфейсная. Я могу инкапсулировать и прятать что угодно, но индексы мне нужны для оперирования объектами как массивами. Фактически все массивы как-то устроены. Например обычные динамические массивы mql. Может запретим их слева от оператора присваивания ставить? Заменим функцией какой-нибудь типа SetArrayValue(array, i, j, value); Заодно и в читабельности выиграем. Да и отладка станет куда проще. Мля. Уф..
3. А как насчёт того, чтоб сделать нормальный индексатор? Горничная это конечно классно, но королева всё-таки лучше.
4. Вот в этом месте у меня крыша конкретно начала ехать. Это что, нечитабельно??
Вот это читабельнее, да?
t.setDataElement(i, i*i);
Круто. Пожалуй пойду лечиться.
5. Ваще круто.
6. Я плакаль.
e(array, i, j, value); Questo migliorerà anche la leggibilità. E anche il debug diventerà molto più facile. Merda. Ugh...
Beh, un setter ha il vantaggio di poter fare qualcosa di più di una semplice equazione.
Per esempio, si possono registrare informazioni, convertire dati (se parliamo di stringhe o di dati più complessi), inviare messaggi ad altri oggetti se succede qualcosa di importante (come aggiornare i dati).
Come farà il vostro oggetto a sapere quando la data è cambiata? A quanto pare, si sta andando a memorizzare le citazioni...
Oh sì, questo è un falso problema, perché il vostro oggetto è più simile a una struct e non gestisce davvero nulla.
Tutto è fatto in un'altra classe spazzatura, che gestisce tutto o peggio ancora, tutto avviene in onStart(), onTick(), ... ! :)
Buona giornata
3. che ne dici di fare un normale indicizzatore? Maid è figo, ma queen è meglio.
Guarnizione Muti. Rispetto a un normale valore, tuttavia, sarà molto più costoso in termini di tempo. Ma avrà l'aspetto che vi serve.
______
Ah, diavolo no. Allora avete bisogno di un sovraccarico dell'operatore di tipo fantasma. Peccato.
Beh, il vantaggio del setter è che si può fare qualcosa di più di una semplice equazione.
Per esempio, si possono registrare informazioni, convertire dati (se parliamo di stringhe o di dati più complessi), inviare messaggi ad altri oggetti se succede qualcosa di importante (come aggiornare i dati).
Come farà il vostro oggetto a sapere quando la data è cambiata? A quanto pare, si sta andando a memorizzare le citazioni...
Oh sì, è un falso problema, perché il vostro oggetto è più simile a una struct e non controlla realmente nulla.
Tutto è fatto in un'altra classe spazzatura, che gestisce tutto o peggio ancora, tutto avviene in onStart(), onTick(), ... ! :)
Buona giornata
Il punto è che l'indicizzatore è uguale al setter in termini di caratteristiche . È implementata come una funzione, il cui contenuto può essere qualsiasi cosa (il caso tipico più semplice è il controllo dei limiti dell'array e la gestione di altri errori), e non sta semplicemente restituendo un riferimento a un elemento dell'array.
Buona giornata anche a te.
(Scusate il tono di ieri, ero un po' nervoso - problemi al lavoro. Tu non c'entri niente. Beh, a meno che tu non sia troppo categorico :)
Guarnizione Muti. Rispetto a un normale valore, tuttavia, sarà molto più costoso in termini di tempo. Ma avrà l'aspetto che vi serve.
______
Ah, diavolo no. Allora devi sovraccaricare l'operatore di conversione dei tipi. Peccato.
In realtà penso che lo faranno, c'è un difetto evidente con i ritorni di riferimento nella lingua.
Non è necessario fare variabili di riferimento, ma il ritorno di valori l dalle funzioni è sacro... :)
Non penso che non possa essere risolto in linea di principio - il linguaggio ha i soliti mql-arrays e si sentono molto bene su entrambi i lati dell'operatore di assegnazione. Ma sono classi C++ per implementazione!
Ecco un altro esempio della stessa serie: questo codice si compila ma non funziona.
Il mio punto non è che non dovrebbero compilare - il mio punto è che dovrebbero funzionare. :)
...
Non sto dicendo che non dovrebbe compilare, sto dicendo che dovrebbe funzionare... :)
MQL5 ha una meravigliosa costante IS_DEBUG_MODE che appartiene al gruppo Other constants. Possiamo aggiungere tale costante per un tester? Qualcosa come IS_TESTER_MODE...
MQL5 ha una meravigliosa costante IS_DEBUG_MODE che appartiene al gruppo Other constants. Possiamo aggiungere tale costante per un tester? Qualcosa come IS_TESTER_MODE...
Queste costanti non funzionerebbero?
ENUM_MQL5_INFO_INTEGER
Identificatore
Descrizione
Tipo di proprietà
MQL5_PROGRAMMA_TIPO
Tipo di programma mql5
ENUM_PROGRAMMA_TIPO
MQL5_DLLS_ALLOWED
Permesso di usare la DLL per il programma corrente in esecuzione
bool
MQL5_TRADE_ALLOWED
Permessodi commerciare per questo programma in corso
bool
MQL5_DEBUGGING
Segno di un programma in esecuzione che lavora in modalità debug
bool
MQL5_TESTING
Segno dell'esecuzione di un programma nel tester
bool
OTTIMIZZAZIONE MQL5
Segno dell'esecuzione di un programma durante l'ottimizzazione
bool
MQL5_VISUAL_MODE
Segno dell'esecuzione di un programma in modalità di test visivo
bool