Zugriff auf Listen in Scheme < Algor.+Datenstr. < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 11:12 Do 04.11.2010 | Autor: | Random |
Hallo Leute,
hat jemand eine Ahnung wie ich in Scheme auf Listen zugreife?
Habe folgende Situation:
(define-struct team (name group score))
(define some-teams
(list
(make-team "Germany" 1 4)
(make-team "Netherlands" 1 3)
(make-team "Japan" 1 2)
(make-team "France" 2 1)
(make-team "Italy" 2 5)
(make-team "Spain" 2 0)))
Wie kann ich auf einen Speziellen Platz in der Liste zugreifen. Z.B. will ich die zwei werte haben, die hinter France stehen.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 19:05 Fr 05.11.2010 | Autor: | rainerS |
Hallo!
> Hallo Leute,
>
> hat jemand eine Ahnung wie ich in Scheme auf Listen
> zugreife?
> Habe folgende Situation:
>
> (define-struct team (name group score))
>
> (define some-teams
> (list
> (make-team "Germany" 1 4)
> (make-team "Netherlands" 1 3)
> (make-team "Japan" 1 2)
> (make-team "France" 2 1)
> (make-team "Italy" 2 5)
> (make-team "Spain" 2 0)))
>
> Wie kann ich auf einen Speziellen Platz in der Liste
> zugreifen. Z.B. will ich die zwei werte haben, die hinter
> France stehen.
Eine Liste ist eine spezielle Form von Paar. Dabei ist die erste Hälfte des Paares das erste Listenelement, die zweite Hälfte der Rest der Liste. Bei einer Liste mit nur einem Element ist die zweite Hälfte des Paares die leere Liste () .
Auf das erste Element eines Paares greifst du mit car zu, auf das zweite Element (den Rest der Liste) mit cdr.
Daher bekommst du das erste Element mit
(car some-teams)
das zweite mit
(car (cdr some-teams))
das dritte mit
(car (cdr (cdr some-teams)))
usw.
Da das mühsam zu schreiben ist, gibt es für bis zu vier Kombinationen von car und cdr Abkürzungen:
(car (cdr some-teams)) --> (cadr some-teams)
(car (cdr (cdr some-teams))) --> (caddr some-teams)
(car (cdr (cdr (cdr some-teams)))) --> (cadddr some-teams)
ABER:
(car (cdr (cdr (cdr (cdr some-teams))))) --> (car (cddddr some-teams))
Viele Grüße
Rainer
|
|
|
|