에 추가되지 않은 이유는 다음과 같이 나는 작은 텍스트 파일이 있습니다목록 라켓
one, 50, 40, 65, 500
two, 80, 70, 100, 250
three, 100, 55, 125, 100
four, 50, 45, 58, 850
내가 그것을 읽고 각 라인의 2 열에있는 모든 값의 목록을 만들려고 노력하고 있습니다.
#lang racket
(define (testfn fname)
(let ((sl '()) (list2 (list)) (templist '()) (ss ""))
(set! sl (file->lines fname))
(for ((line sl))
(set! templist (string-split line ","))
(println templist)
(set! ss (list-ref templist 1))
(println ss)
(append list2 ss) ; does not work
(append list2 (list ss)) ; does not work
(cons ss list2) ; does not work
(cons (list ss) list2) ; does not work
(cons list2 (list ss)) ; does not work
(cons list2 ss) ; does not work
(println list2)
)
(println list2)))
(testfn "test.txt")
그러나, '리스트 2는'내가 위에서 사용하고있는 많은 방법 중 하나를 가진 문자열 'SS'가 추가 점점되지 않은 : 다음 내가 사용하고있는 코드입니다. 출력 결과는 다음과 같습니다.
'("one" " 50" " 40" " 65" " 500")
" 50"
'()
'("two" " 80" " 70" " 100" " 250")
" 80"
'()
'("three" " 100" " 55" " 125" " 100")
" 100"
'()
'("four" " 50" " 45" " 58" " 850")
" 50"
'()
'()
>
어디에서 문제가 발생하며 어떻게 해결할 수 있습니까?
편집 : 실수를 수정하는 @JohnClements 지적한 후, 다음 코드는 작동 :
#lang racket
(define (testfn fname)
(let ((sl '()) (list2 (list)) (templist '()) (ss ""))
(set! sl (file->lines fname))
(for ((line sl))
(set! templist (string-split line ","))
(set! ss (list-ref templist 1))
(set! list2 (append list2 (list ss)))
(println list2)
)
(println list2)))
(testfn "test.txt")
출력 :
'(" 50")
'(" 50" " 80")
'(" 50" " 80" " 100")
'(" 50" " 80" " 100" " 50")
'(" 50" " 80" " 100" " 50")
>
예, 나는 그것을 얻었다. (set! list2 (append list2 (list ss)))가 작동했습니다. 감사. – rnso
두 번째 (더 짧은) 프로그램이 어떻게 작동하는지 설명 할 수 있다면 좋을 것입니다. – rnso
예! 이 프로그램은 다음과 같이 말합니다. testfn2는 'fname'이라는 인수가있는 함수입니다.전화를 걸면 파일의 모든 줄을 고려하고 그 줄을 쉼표로 분리 한 결과의 두 번째 결과를 가져 와서 얻은 결과 목록을 만듭니다. –