Lorsque j'utilise Manipulez je peux faire:Définir le contrôle comme variable dans Mathematica
Manipulate[x, {u, 1, 10}]
En réalité, mes contrôles sont nombreux et complexes, donc je préférerais prendre leur définition de l'expression Manipulez, comme ça :
control = {u, 1, 10}
Manipulate[x, control]
Mais cela ne résulte en une erreur:
Manipulate argument control does not have the correct form for a \
variable specification.
Pourquoi cela ne fonctionne-t-il pas de cette façon?
L'exemple que vous avez fourni, et ce que je vois dans la plupart des réponses est que la complexité du code est pas réduit du tout. Certaines des réponses créent un morceau de code très complexe en utilisant significativement plus de caractères, un tas de constructions supplémentaires, etc. Je pense qu'améliorer la _layout_ de votre code (chaque contrôle sur sa propre ligne, regrouper visuellement les contrôles liés etc.) dans la plupart des cas suffisent. –
Grâce aux réponses, je comprends mieux ce qui se passe, mais vous avez parfaitement raison: aucune des constructions ne simplifie vraiment le code. Ce qui me rend fou est la profondeur d'imbrication des parenthèses dans mon code. Probablement c'est la manière de Lisp de le faire, mais n'y a-t-il pas un moyen de rendre mes programmes plus linéaires? –
@Sjoerd bien, si un morceau de code apparaît dans un endroit, alors je suis d'accord avec vous. Cela a généralement du sens si a) vous utilisez le code à plus d'un endroit, ou b) le code complet devient trop long pour être facilement modifié. Par exemple, j'ai un cahier avec un «Manipuler» le code pour lequel ne figure pas sur l'écran de 13 pouces de mon macbook. Je dois soit utiliser un truc comme celui-ci, ou essayer de charger le tout dans ma tête chaque fois que j'ai besoin de le modifier.Comme je dois déjà réfléchir au problème que je suis en train de résoudre, je préfère réduire la complexité du code en ajoutant quelques caractères. – acl