Comment Passer des Fonctions en tant que Paramètres dans les Procédures en Delphi?
Est-il possible de passer un objet en fonction d'un paramètre dans une procédure plutôt que de passer l'ensemble de l'objet?
J'ai une définition de l'enregistrement avec une fonction définie comme une classe publique de paramètres tels que:
TMyRecord = record
public
class function New(const a, b: Integer): TMyRecord; static;
function GiveMeAValue(inputValue: integer): Single;
public
a, b: Integer;
end;
La fonction pourrait être quelque chose comme:
function TMyRecord.GiveMeAValue(inputValue: Integer): Single;
begin
RESULT := inputValue/(self.a + self.b);
end;
Ensuite, je souhaite définir une procédure qui appelle la fonction de classe GiveMeAValue
mais je ne veux pas passer l'ensemble de l'enregistrement. Puis-je faire quelque chose comme ceci, par exemple:
Procedure DoSomething(var1: Single; var2, var3: Integer, ?TMyRecord.GiveMeAValue?);
begin
var1 = ?TMyRecord.GiveMeAValue?(var2 + var3);
//Do Some Other Stuff
end;
Si oui, alors comment pourrais-je passer correctement la fonction en tant que paramètre de la procédure?
OriginalL'auteur Trojanian | 2013-11-05
Vous devez vous connecter pour publier un commentaire.
Vous pouvez définir un nouveau type pour la fonction comme
puis définir la méthode
DoSomething
Et de l'utiliser comme
Anon méthodes de rendre le code plus souple. Cependant, ils peuvent être une des performances les maux de tête. Ne pas les rejeter sans chronométrage, mais si vous avez utilise anon méthodes dans un goulot d'étranglement de la zone de votre programme, vous risquez de souffrir.
Bon point. Personnellement, je trouve le
procedure-or-function of object
syntaxe plus lisible que lareference to procedure-or-function of object
la syntaxe trop. écritprocedure (a,b,c:Integer) begin ... end
inline commence à devenir laid.Merci pour ce! Fonctionne un régal. 🙂
Votre méthode de référence utilise Unique de l'objet' au lieu de simplement 'de l'objet'. Êtes-vous seulement de leur dire de mettre l'Auto pointeur en un Seul?
OriginalL'auteur RRUZ