It is currently 21 April 2025, 21:03 Advanced search

parametri opzionali: perchè a volte si possono saltare?

Domande e risposte su come utilizzare Instant Developer Foundation al meglio

parametri opzionali: perchè a volte si possono saltare?

Postby f.faleschini » 5 December 2024, 13:38

Ciao,

mi pare che non si possano saltare parametri opzionali, cioè se una procedura ha 4 parametri, di cui gli ultimi 3 opzionali si può:
- non usare il quarto
- non usare il terzo e il quarto
- non usare il secondo, li terzo e il quarto

ma le altre combinazioni no (ad esempio usare solo primo e quarto).

però questo è possibile:
Image

perché? Mi ricordo che anche Inde a volte si lamenta per i parametri saltati, ma ora non riesco a riprodurlo.

Allego il mini progetto da cui ho preso lo screenshot.

Ciao!
f.faleschini
 
Posts: 1065
Joined: 12 April 2017, 9:09

Re: parametri opzionali: perchè a volte si possono saltare?

Postby d.pierangeli » 5 December 2024, 14:09

Perchè sotto le scarpe le funzioni con i parametri opzionali sono mappate così:

Code: Select all
metodo(par1) { metodo(par1, "p2"); }
metodo(par1, par2) { metodo(par1, par2, "p3"); }
metodo(par1, par2, par3) { .... }


Quindi non c'è una funzione con parametri opzionali ma tante funzioni e quindi non puoi saltarli perchè non ci sarebbe la corrispondente funzione nel sorgente.
User avatar
d.pierangeli
Pro Gamma
Pro Gamma
 
Posts: 8092
Joined: 30 September 2010, 15:35

Re: parametri opzionali: perchè a volte si possono saltare?

Postby f.faleschini » 6 December 2024, 6:57

Ok, ma allora perché compila il progetto che ora allego (che ieri evidentemente ho sbagliato ad allegare- ah andava zippato, l'ho capito ora)?
Attachments
Skip Parameters.zip
progetto di cui ho messo uno screenshot nel primo post
(454.83 KiB) Downloaded 24 times
f.faleschini
 
Posts: 1065
Joined: 12 April 2017, 9:09

Re: parametri opzionali: perchè a volte si possono saltare?

Postby d.pierangeli » 6 December 2024, 7:57

Perchè non sono metodi di libreria, quindi sono definiti solo con tutti e 4 parametri e l'IDE quando ne salti uno scrive il valore di default.

Code: Select all
 
      // salto il primo parametro opzionale in una procedura
      // globale
      //
      NewProcedure((new IDVariant("1")), (new IDVariant("1.5")), (new IDVariant("2")), (new IDVariant("3")));
      NewClass v_NC = null;
      v_NC = (NewClass)new NewClass(MainFrm,IMDB);
      //
      // idem in un metodo di una classe
      //
      v_NC.NewMethod((new IDVariant("1")), (new IDVariant("1.5")), (new IDVariant("2")), (new IDVariant("3")));


La differenza dipende dal fatto che in un caso l'ide sa che il valore è opzionale ma con default, nell'altro invece non sa il valore di default ma sa solo che è opzionale.
Se è opzionale senza default allora non lo puoi "saltare".
User avatar
d.pierangeli
Pro Gamma
Pro Gamma
 
Posts: 8092
Joined: 30 September 2010, 15:35

Re: parametri opzionali: perchè a volte si possono saltare?

Postby f.faleschini » 6 December 2024, 13:22

Grazie, ma come si fa un opzionale senza dafault? Non c'è sempre un default quando il parametro è optional?
f.faleschini
 
Posts: 1065
Joined: 12 April 2017, 9:09

Re: parametri opzionali: perchè a volte si possono saltare?

Postby d.termini » 9 December 2024, 7:39

Può essere che cambi comportamento se c'è attiva la compatibilità c#/java o il flag offline?
d.termini
 
Posts: 1638
Joined: 13 November 2017, 8:41


Return to Tips & Tricks - Foundation

Who is online

Users browsing this forum: No registered users and 51 guests

cron