1

新しいデータを渡さずにRacketに保存されたリストにアクセスする方法はありますか? 過去の応答のリストは、私が取り組んでいるプログラムで次のコードを使用して保存されます。

(define (storage response lst)
  (cons response lst))

これは、質問に対する回答と前のリストを取得してリストを作成します。リストの内容を変更したくありません。単にその内容を確認するだけです。他のコードが必要な場合は、私が持っているものを喜んで示します。

4

3 に答える 3

0

Racket でリストの要素にアクセスする標準的な方法は、firstandrestプロシージャ (または同等のcarand cdr) を使用して、リストを再帰的に反復することです。"404"たとえば、リストに応答が含まれているかどうかを確認したいとします。

(define responses '("302" "403" "404" "505"))

(define (find-response lst response)
         ; the list is empty, the element was not found
  (cond ((empty? lst)
         #f)
         ; `first` accesses the first element in the list
        ((equal? (first lst) response)
         #t)
        (else
         ; `rest` advances to the next elements in the list
         (find-response (rest lst) response))))

(find-response responses "404")
=> #t

(find-response responses "201")
=> #f

もちろん、これがどのように機能するかを理解したら、たとえばmember他の回答で提案されているように、既存の手順を移動して使用できます。使用可能な手順の一覧をご覧ください。最も頻繁に使用される操作が既に実装されており、自由に使用できることがわかります。

于 2013-06-16T22:08:16.583 に答える