Quando uso Manipolare che posso fare:Definire controllo come variabile in Mathematica
Manipulate[x, {u, 1, 10}]
In realtà i miei controlli sono molte e complicato, quindi io preferirei prendere la loro definizione fuori l'espressione Manipolare, come quello :
control = {u, 1, 10}
Manipulate[x, control]
Ma questo risultato in un errore:
Manipulate argument control does not have the correct form for a \
variable specification.
Perché non funziona in questo modo?
L'esempio che hai fornito, e quello che vedo nella maggior parte delle risposte è che la complessità del codice è non ridotto affatto. Alcune delle risposte creano una parte di codice molto complessa usando un numero significativamente maggiore di caratteri, una serie di costrutti di scoping aggiuntivi ecc. Sento che solo migliorando il _layout_ del codice (ogni controllo sulla propria linea, raggruppando visivamente i controlli correlati ecc.) In la maggior parte dei casi è sufficiente. –
Attraverso le risposte capisco meglio cosa sta succedendo, ma hai perfettamente ragione: nessuno dei costrutti rende il codice molto più semplice. Quello che mi fa impazzire è la folle profondità di annidamento delle parentesi nel mio codice. Probabilmente è il modo Lisp di farlo, ma non c'è un modo per rendere i miei programmi più lineari? –
@Sieda bene, se un pezzo di codice appare in un posto, quindi sono per lo più d'accordo con te. Di solito, ciò ha senso se a) si sta utilizzando il codice in più di un posto, oppure b) il codice completo sta diventando troppo lungo per essere facilmente modificato. Ad esempio, ho un notebook con un 'Manipulate' il cui codice non è presente sullo schermo da 13 pollici del mio macbook. Devo usare un trucco come questo, o provare a caricare l'intera cosa nella mia testa ogni volta che ho bisogno di modificarlo.Poiché devo già riflettere sul problema che sto effettivamente risolvendo, preferisco ridurre la complessità del codice aggiungendo alcuni caratteri. – acl