Aliaser une fonctionExiste-t-il un moyen de vraiment alias une fonction et pas seulement d'en créer une copie?
Names default to here(1);
f = function({x, y},
print(x);
);
// I'm assuming this just copies it.
alias_f = nameexpr(f);
alias_f(14, 28);Re: Aliasing d'une fonctionJe suis sûr que le code interne généré par le une fonction (...) la fonction est clonée s'il existe une deuxième variable pour la même fonction.
Selon la raison pour laquelle vous avez besoin d'un alias, envisagez
a = b = Function( {c}, Show( c ) );Voici un moyen de jeter un œil au coin de la rue et de voir qu'il y a probablement un clone:
a = b = Function( {c}, Show(asconstant (c) ) );
a(42);//42
b(43);//43
a(44);//42
b(45);//43Qu'est-ce que vous essayez d'accomplir? Les espaces de noms peuvent être transmis sans cloner leur contenu (et le contenu peut être des définitions de fonction.) Si la fonction est énorme et que le clonage prend beaucoup de temps, un minuscule wrapper avec le nom d'alias peut être approprié. S'il est lié à ParallelAssign, il a vraiment besoin du clone pour des raisons internes, similaire à l'exemple asConstant.
Re: Aliasing d'une fonctionintéressant.
Pour plus de contexte. J'essaie d'alias une nouvelle fonction personnalisée à un autre nom à cause d'un refactor.
essayer de tourner
MyNCF: crappy_function_name
à
MyNCF: better_function_name
sans casser les vieux scripts.
J'aime l'idée d'emballer.
Je n'ai jamais utilisé As Constant auparavant. C'est super cool.
Je pense que c'est plus que suffisant pour moi de jouer avec. Très appréciée.