Kam über einige Szenarien, die man operators
als parameter
in einer Funktion oder einer Methode übergeben möchte. According to this post Java doesn't have that ability, hence need to create an Enum
as the primary workaround.Gibt es eine Möglichkeit, arithmetische und logische Operatoren als Methodenparameter in VBA zu übergeben?
z.
Function doCalcs(ByRef AND as LogicalOperator, ByRef greater ArithmeticOperator)
Obwohl VBA hat viel geringeren Bibliotheken im Vergleich zu .Net, Java, die Erstellung Enum
wird ebenfalls unterstützt. Vielleicht ist mir nicht bekannt, also, wenn es eine Möglichkeit gibt, dass VBA operator types
oder andere Problemumgehungen hat, könnten wir an operator
passieren, schieße das in. (Außer if else
/case
, um eine Zeichenfolge zu überprüfen, die den Operatorparameter enthält .. =)) Was Ich frage ist different from what's mentioned here.
- Frage wird in Bezug auf die Reduzierung von Codes, Optimierung gefragt.
z. Wenn Sie CountIFS
betrachten, hat es die Möglichkeit, operators
aufzunehmen. Selbst wenn jemand die mögliche Back-End-Arbeit in dieser Funktion, erklären kann
- Wie funktioniert diese Strings in eine richtige
operator
konvertieren? - Ist das eine
Enum
Struktur oder etwas effizienter als das oder weniger als das?
Eine Antwort auf diese Fragen ist noch akzeptabel.
Dies hängt wirklich davon ab, was Sie mit dem Parameter innerhalb der Funktion tun. Die nützlichste Sache, die ich mir vorstellen kann, mit einem konzeptionellen Operator zu tun, der als Parameter übergeben wird, ist, ihn als Rückruf zu verwenden. Zum Beispiel habe ich vielleicht eine Funktion 'get3op2()', die einen binären Operator wie '+' oder '*' akzeptiert und das Ergebnis der Verwendung dieses Operators für vordefinierte Operanden wie '3' und' 2' zurückgibt . Dann würde hypothetisch "get3op2 (+)" 5 (d. H. 3 + 2) zurückgeben, während "get3op2 (*)" 6 zurückgeben würde (d. H. 3 · 2). Ist es das, was du versuchst? – psmay
Hinweis: Eine enum typisierte Struktur enthält lediglich eine Liste von beschreibenden Konstantennamen als Wert für Konstanten mit langer Länge. Was Ihre Frage betrifft, sehe ich nicht wirklich den zusätzlichen Nutzen einer Enumeration. Wie für die Frage, ob es möglich ist, einen Operator direkt zu übergeben: es ist nicht in VBA. Was die Problemumgehung betrifft, ja, es gibt, wo eval wäre die beste Option wie erwähnt. Sonst verstehe ich vielleicht nicht die eigentliche Frage ... – Trace
@Kim gibt es zwei Fragen: '1.' Die Operatoren als Parameter' 2.' Der Mechanismus hinter der Operator-Auswertung 'CountIFS'. – bonCodigo