Abrufen von Elementen aus der Liste in scheme
Wie gehen Sie durch eine Liste oder fetch-element aus einer Liste in scheme?
Wie kann ich den Namen jedes element (wie wir es tun für Variablen in java) in eine Liste?
Vielen Dank im Voraus.
Möchte ich vergleichen, von jedem Punkt in einer Liste zu einem anderen Punkt. So, wie wir in java oder python-
for(int i;i<list.size();i++){
if (list[i]> k){
//do something
}
}
Wie kann ich etwas ähnliches im Programm?
Ich verstehe nicht die Frage, konnte Sie klären, ein bisschen? Namen möchten Sie jeden Wert in einer Liste?
Vielen Dank Jonas für deine Antwort. Ich habe bearbeitet die Frage. Bitte überprüfen Sie es.
Vielen Dank Jonas für deine Antwort. Ich habe bearbeitet die Frage. Bitte überprüfen Sie es.
InformationsquelleAutor fireball003 | 2009-06-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
InformationsquelleAutor leppie
leppie und Jonas geben die richtige Antwort für die Iteration über eine Liste in Scheme. Allerdings, wenn Sie brauchen, um einen einzelnen Wert in einer Liste an, nutzen
list-ref
.Ist größtenteils äquivalent zum Java-code
InformationsquelleAutor Nathan Shively-Sanders
Können Sie für-jeden:
for-each
ist ähnlichmap
aber der return-Wert ist nicht angegeben. Es ist genannt für seine Nebenwirkungen nur.On a side note, Es scheint mir, dass Sie lernen-Schema aus einem java-hintergrund (das ist ok). Scheme-Programme werden oft geschrieben in anderen Stil als in Java. Scheme ist eine funktionale Sprache und Schleifen-Konstrukte sind nicht ganz so oft. Pick-up ein Buch über die Regelung, zum Beispiel Die Scheme-Programmiersprache oder Wie-Design-Programme zu lernen, wie man Programme schreiben "- Schema Weg"
InformationsquelleAutor Jonas
Sollten Sie anders denken, wenn das schreiben in eine funktionale Sprache. Eigentlich sollte man vergessen, die Programmierung denken (für loops, usw.), einfach definieren Sie, was Sie wollen. Zum Beispiel "ich möchte eine Aktion für jede ungerade Zahl in meiner Liste."
So würden Sie schreiben :
Oder der Zustand element sein kann, > 4
Für eine Aktion, Sie geben sich jede Funktion :
InformationsquelleAutor Eino Gourdin
Beispiel
In diesem Fall, "dosomething" wäre eine andere definition, die entweder voreingestellt oder nicht. Definition ist Analog zu einer "Funktion" lassen Sie uns sagen, wie square() oder mult(), als Beispiele.
Ich denke ein rekursiver, wie dies funktionieren sollte, die für die Liste benötigt:
(define (func list)
(if (> (car list) k)
(dosomething))
(func (cdr list)))
Kann man auch schreiben zwei Definitionen, eine haben enthalten eine Liste und senden Sie es an das erste Beispiel und das Ergebnis zurückgeben, vergleichen, etwas tun oder nicht, und weiter.
InformationsquelleAutor Sev
Können Sie
list-ref
zu ziehen, einen Wert aus einer Liste durch den index. Aber beachten Sie, dass in Scheme Listen sind eigentlich linked lists -- so(list-ref l 100)
wird verfolgen müssen, durch eine 100 Referenzen. Wenn Sie wirklich wollen, random-access-Werte eines Vektors.InformationsquelleAutor Eli Barzilay
Ich bin nicht sicher, ob dies ist, was Sie wollen, aber das hier geht an die ganze Liste (linked) und vergleichen Sie jeweils mit dem element, übergeben Sie als parameter:
Das Problem, dass diese ist ein Verfahren, vielleicht ist es ja hilfreich für jemanden.
grüßt
InformationsquelleAutor Christian