Comment supprimer la variable "clear" dans MATLAB

disons que vous êtes le nouveau programmeur et que vous faites quelque chose comme...

%...la da da
%...programming away
if such && such
    clear = 1;
else 
    clear = 0;
end 

ou d'une autre manière, vous affectez à la variable clear une valeur.

Est-il possible de "clair" clear?

clearvars ne fonctionne pas. Cliquer sur la variable workspace et cliquer manuellement sur delete fonctionne, mais je pense que c'est de la triche.

18
demandé sur Frederick 2013-08-21 18:46:21

4 réponses

Cela fera:

builtin('clear','clear')

Remarque: gardez à l'esprit d'éviter de telles opérations pour garder la clarté du code. Ne réécrivez que lorsque c'est l'action exacte que vous voulez effectuer. Sinon, il peut causer des bugs futurs si vous avez oublié (ou si une autre personne utilise votre code et ne l'a pas réalisé) que vous avez la fonction clair (ou toute autre) écrasée. Vous pouvez facilement nommer cette variable comme doClear par exemple.

27
répondu Try Hard 2013-08-21 15:15:56

n'Importe quel nom, même builtin et feval peut être remplacé. Dans de tels cas, vous pouvez utiliser poignées de fonction au lieu de forcer MALTAB à interpréter un énoncé comme une fonction Appel:

clear = str2func('clear');
clear('clear')

de toute Évidence, str2func peuvent aussi être dépassés! :) cependant, il existe une solution similaire (inspiré par article de Loren), qui crée un fichier M séparé qui fait la même chose:

function clearclear()
    assignin('caller', 'clear', @clear);

appeler cette fonction dans l'espace de travail principal devrait vous permettre de faire clear('clear') en toute sécurité.

la seconde solution tire avantage du fait que le m-file ne "voit" pas la variable clear dans l'espace de travail principal, et donc peut accéder à la poignée réelle du clear fonctionner correctement.

8
répondu Eitan T 2013-09-11 18:34:40

non intuitive, est

clear = rand(1000,500,700);
pack

Ce qui produit l'avertissement suivant:

Il souffre également du même problème que vous pouvez attribuer pack être une variable.

1
répondu StrongBad 2013-10-07 16:00:34

problème Intéressant! J'ai trouvé étonnamment difficile de trouver un moyen de faire cela de façon programmatique (en plus de celui suggéré par @TryHard)

voici ce que j'ai inventé bien qu'il soit un peu plus puissant que clear:

!matlab &
exit

Notez que si vous voulez entrer dans la ligne de commande à la fois, vous devez utiliser une maj+entrée entre les deux.

0
répondu Dennis Jaheruddin 2013-08-21 15:20:42