| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Listen mit variablem Variablennamen (781 mal gelesen)
|
kayauser Mitglied TZ
Beiträge: 50 Registriert: 10.01.2012 Autocad alles seit 1993
|
erstellt am: 18. Jan. 2012 09:05 <-- editieren / zitieren --> Unities abgeben:
da ich nirgends eine Erklärung gefunden habe, wie man eine Liste mit variablem Variablennamen definiert, habe ich mir das selbst hergeleitet und stelle das hier ein, da das etwas verwirrend ist und sonst ja auch jeder triviale Quatsch gepostet wird: gegeben ist ein Variablenname:
Code: (setq variablenname "string")
dieser soll eine Liste benennen, die mit append sukzessive aufgefüllt werden soll. Die Grundform wäre
Code: (setq variablenname (append variablenname (list wert))
, wobei variablenname sowohl hinter setq als auch hinter append erscheint, daher ist man zunächst verführt, Code: (set (read variablenname)(append (read variablenname)(list wert)))
zu schreiben. Das kann jedoch nicht funktionieren, da append nur Listen verarbeitet. Wenn die Liste nicht existiert, wird sie beim Aufruf von append erzeugt und evaluiert. Dies geschieht bei Code: (append (read variablenname)...
nicht, deshalb muss man die Variable zusätzlich evaluieren:
Code: (set (read variablenname)(append (eval(read variablenname))(list wert)))
weiterhin viel Spass wünscht kayauser Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 18. Jan. 2012 10:23 <-- editieren / zitieren --> Unities abgeben: Nur für kayauser
Es spricht nicht für dein Googletalent, umso mehr "für dich" - freut mich das du zu einer Lösung gekommen bist. Ich würde noch anmerken das bevor du SET einsetzt zunächst mal testen solltest ob der String überhaupt als Symbolnamen einsetzbar ist. Code:
(if (and (= 'SYM (type(read VN))) ; Symbol oder Zahl ? (snvalid VN 0) ; Sonderzeichen ? (not(vl-string-position (ascii " ") VN)) ; Leerzeichen bringen auch Ärger ) (set (read VN) (cons WERT (eval(read VN))))
------------------ CAD.de System-Angaben - CAD on demand - User:FAQ(Acad) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kayauser Mitglied TZ
Beiträge: 50 Registriert: 10.01.2012
|
erstellt am: 18. Jan. 2012 10:52 <-- editieren / zitieren --> Unities abgeben:
Ich musste die Variablenbezeichnungen in der Tat umwandeln, wusste allerdings nicht, ob ich es hier dazubringen soll. Zu Google muss man leider sagen, daß die Lösungen oft in fremde Problemlösungen eingebettet sind oder in unnötig aufgeblasenen Beispielen daherkommen, was das Auffinden sehr erschwert. Dazu kommt die Tatsache, daß die Begrifflichkeiten in verschiedenen Sprachen variieren oder durch Nerd-Sprech verzerrt werden. Deshalb mein Tip, immmer mal wieder durch wohlgewählte Begriffe die Erklärungen zu indizieren. Dann finden es auch Nicht-Google-Profis wie ich es bin. ((sorry...off topic)) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|