On ne m'a pas rattrappé par les bretelles... Il vaut mieux éviter de tenter d'inverser plusieurs fois une matrice qui ne peut pas l'être, d'accord, mais calculer plusieurs fois le résultat de l'inversion quand cela a déjà été fait une fois ne vaut guère mieux.
On peut donc ajouter un attribut non visible, par exemple resultat_inversion: MATRICE.
on peut modifier le corps de la routine par
require [...]
do
if already_tried then
Result := resultat_inversion -- si ça a foiré précédemment resultat_inversion = Void
else
Result := un_calcul_compliqué
resultat_inversion := Result
already_tried := True
ensure [...]
rescue[...]
end
La clause d'exception permet d'effectuer un_calcul_compliqué sans filet (un des risques est de tenter de faire une division par zéro). Il va de soi qu'il est possible de faire autrement.
[^] # Re: Quelques "coquilles"
Posté par Philip Marlowe . En réponse à la dépêche Sortie de Hercule la version 2 du compilateur SmartEiffel. Évalué à 0.
On peut donc ajouter un attribut non visible, par exemple resultat_inversion: MATRICE.
on peut modifier le corps de la routine par
require [...]
do
if already_tried then
Result := resultat_inversion -- si ça a foiré précédemment resultat_inversion = Void
else
Result := un_calcul_compliqué
resultat_inversion := Result
already_tried := True
ensure [...]
rescue[...]
end
La clause d'exception permet d'effectuer un_calcul_compliqué sans filet (un des risques est de tenter de faire une division par zéro). Il va de soi qu'il est possible de faire autrement.