Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Listen mit variablem Variablennamen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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


Sehen Sie sich das Profil von kayauser an!   Senden Sie eine Private Message an kayauser  Schreiben Sie einen Gästebucheintrag für kayauser

Beiträge: 50
Registriert: 10.01.2012

Autocad alles seit 1993

erstellt am: 18. Jan. 2012 09:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 18. Jan. 2012 10:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für kayauser 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von kayauser an!   Senden Sie eine Private Message an kayauser  Schreiben Sie einen Gästebucheintrag für kayauser

Beiträge: 50
Registriert: 10.01.2012

erstellt am: 18. Jan. 2012 10:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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 >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz