In un paio di scenari si vorrebbe passare operators
come parameter
in una funzione o un metodo. According to this post Java doesn't have that ability, hence need to create an Enum
as the primary workaround.Esiste un modo per passare l'operatore aritmetico e logico come parametro del metodo in VBA?
E.g.
Function doCalcs(ByRef AND as LogicalOperator, ByRef greater ArithmeticOperator)
Anche se VBA ha librerie molto minore rispetto a .Net, Java, creando Enum
è ben supportato. Forse non ne sono a conoscenza, quindi se c'è una possibilità che VBA abbia operator types
o altre soluzioni alternative potremmo passare an operator
, riprendere quello in. (Diverso da if else
/case
per controllare una stringa che contiene il parametro operatore. =)) Cosa Sto chiedendo è different from what's mentioned here.
- La domanda viene posta in termini di riduzione dei codici, ottimizzazione.
E.g. Se si guarda CountIFS
, ha la capacità di contenere operators
. Anche se qualcuno può spiegare l'eventuale lavoro di back-end all'interno di questa funzione,
- Come convertire queste stringhe in un vero
operator
? - È una struttura
Enum
o qualcosa di più efficiente o minore?
Una risposta a queste domande è ancora accettabile.
Questo dipende molto da cosa si sta facendo con il parametro all'interno della funzione. La cosa più utile che posso pensare di fare con un operatore concettuale passato come parametro è usarlo come callback. Per esempio, forse ho una funzione 'get3op2()' che accetta un operatore binario, come '+' o '*', e restituisce il risultato dell'uso di quell'operatore su operandi predefiniti, come '3' e' 2' . Quindi, ipoteticamente, 'get3op2 (+)' restituirebbe 5 (cioè 3 + 2) mentre 'get3op2 (*)' restituirebbe 6 (cioè 3 * 2). E 'quello che stai cercando di fare? – psmay
Nota: una struttura tipizzata enum contiene semplicemente un elenco di nomi di costanti descrittivi come valore per costanti lunghe tipizzate. Per quanto riguarda la tua domanda, non vedo davvero il valore aggiunto dell'uso di una enumerazione. Per quanto riguarda la domanda se è possibile passare direttamente un operatore: non è in VBA. Per quanto riguarda la soluzione, sì, c'è, dove eval sarebbe la migliore opzione come menzionato. Altrimenti, potrei non capire la vera domanda ... – Trace
@Kim ci sono due domande: '1.' gli operatori come parametri' 2.' il meccanismo alla base della valutazione dell'operatore della funzione 'CountIFS'. – bonCodigo