• [^] # Re: Quelques "coquilles"

    Posté par . En réponse à la dépêche Sortie de Hercule la version 2 du compilateur SmartEiffel. Évalué à 0.

    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.