Ho bisogno di progettare una funzione per eseguire le operazioni aritmetiche di base che sono addition (+)
, subtraction (-)
, multiplication (x)
e division (/)
tra 2 numeri.
Quella funzione richiede 3 argomenti:
- number1
: composto da value
e unit
.
- number2
: composto di value
e unit
.
- operation_type
: una delle 4 operazioni di cui sopra.
e dovrebbe tornare:
- number3
: composto da value
e unit
.
Restituire number3
's value
è facile poichè tutto ciò che devo fare è usare istruzioni condizionali per eseguire l'operazione corrispondente (ad esempio if (operation_type == 'addition') { number3.value = number1.value + number2.value; }
).
Tuttavia ho difficoltà a capire come dovrei rappresentare e gestire il unit
( per multiplication
e subtraction
operazioni, come per addition
e subtraction
rimane uguale ) in modo che sia possibile associare più operazioni e aggiornare correttamente il unit
risultante ogni volta. Ecco un esempio:
operations type: multiplications
number1.unit: Kw
number2.unit: h / user / year
number3.unit: Kwh / user / year _
|
number1.unit: Kwh / user / year <-
number2.unit: user
number3.unit: Kwh / year _
|
number1.unit: Kwh / year <-
number2.unit: year
number3.unit: Kwh
...
Il mio unico vincolo è che unit
deve essere inizialmente rappresentato come string
perché è archiviato nel database, quindi possiamo analizzarlo in object/array
come necessario.
Alcuni dei problemi che sto affrontando:
Q1: come garantire un ordine coerente nell'unità risultante (ad esempio h x Kw
e Kw x h
dovrebbero entrambi dare Kwh
)?
Q2: come gestire unità complesse (ad esempio foo / Kw x h / bar
)?
E perché la speranza muore per ultimi:
Q3: esistono algoritmi / schemi di progettazione noti per affrontare questo?