Come restituire più valori?
Nel linguaggio C++, non puoi semplicemente prendere e restituire due valori da una funzione, non puoi nemmeno accettarli, non esiste un tale meccanismo nel linguaggio. Ma ci sono strutture! Una funzione può accettare uno struct, restituire uno struct e possiamo assegnare uno struct. Facciamo una funzione che prende due numeri, ne trova la somma, la differenza e il prodotto e restituisce il risultato. Descriviamo la struttura:
struct MyStruct
{
int valSum;
int valSub;
int valMul;
};
Memorizza la somma, la differenza e il prodotto. Ora creiamo una funzione che prende due numeri, conta, inserisce il risultato in una struttura e restituisce il tipo di dati MyStruct.
MyStruct compute(int val1, int val2)
{
MyStruct str;
str.valSum = val1 + val2;
str.valSub = val1 - val2;
str.valMul = val1 * val2;
return str;
}
Puoi usarlo in questo modo:
void setup()
{
Serial.begin(9600);
MyStruct str;
str = compute(5, 7);
Serial.println(str.valSum);
Serial.println(str.valSub);
Serial.println(str.valMul);
}
Una funzione che valuta e restituisce una struttura può essere ridotta a una sola riga di codice.:
MyStruct compute(int val1, int val2)
{
return (MyStruct) {val1 + val2, val1 - val2, val1 * val2};
}