2017-04-12 2 views
0

목록에서 색인을 제공하는 요소를 가져오고 싶습니다. 그러나 인덱스에 의해 다른 기능을 여물 얻을 것이다 :라켓, 색인을 사용하여 목록에서 값을 얻으십시오.

#lang racket 

(define (list-index e lst) 
    (if (null? lst) 
     0 
     (if (equal? (car lst) (car e)) 
      1 
      (+ 1 (list-index e (cdr lst)))))) 


(list-ref '(aa bb cc dd ee ff) (list-index e lst)) 

예 : 나는 실행하면 (목록 인덱스 '(C)'(ABCD))이 "3"를 반환하고 지금은 그 숫자를 사용하려면 목록으로 두 번째 funtion에서 "cc"를 얻습니다. (aa bb cc dd ee ff).

쟁점은 :

  • 제 (리스트 인덱스 전자 LST)가 제 2 기능에서 오류를주고있다.

  • 두 가지 기능을 모두 결합하는 방법을 모릅니다. 우선

+0

같은 값을 전달하지 않았기 때문에 오류가 발생했습니다. 글로벌'e' 란 무엇입니까? 아마도 귀하의 인용 목록과 동일하지 않습니다. – Sylwester

답변

0

list-ref 너무

(list-ref '(aa bb cc dd ee ff) 3) 

것 출력 'dd하지 CC, 위치 0 첫 번째 요소를 고려한다 있습니다. 둘째

, E 및 LST 모두 식에서 미정/바운드 변수이기 때문에 (list-index e lst) 오류를 생성한다. 프로 시저 (또는 일반적으로 모든 함수)를 적용하려면 실제 값 또는 범위 내의 값에 바인딩 된 식별자를 전달해야합니다. 예를 들어, 다음 작업 및 출력 'dd 것 :

> (list-ref '(aa bb cc dd ee ff) (list-index '(c) '(a b c d))) 
'dd 

출력 CC하려면

(list-ref '(aa bb cc dd ee ff) (sub1 (list-index '(c) '(a b c d)))) 
'cc 

을하거나 출력 0 인덱스 위치에 list-index 자체를 수정할 수 있습니다.

+0

답변 해 주셔서 감사합니다! 그것은 나를 위해 매우 유용했습니다 –

+0

당신은 환영합니다. 가변 범위에 대한 도움이 필요하면 [this] (https://cscircles.cemc.uwaterloo.ca/11b-how-functions-work/) 또는 [ this] (https://www.wikiwand.com/ko/Scope_ (computer_science)) 도움이 될 것입니다. – assefamaru