가능한 중복 : 나는 현재 (커먼 리스프를 사용하여) 리스프와 함께 몇 가지 과정을 수행하고 어느 곳에서도 나는 '이 문제를 설정해야 해요
LISP - Global variable keep their old value after reinitialization임시 편집 전역 변수
나는 가지고있다.
그것은 설명하기가 까다로운하지만 여기에 표시됩니다 ..
상황 : 나는 두 개의 전역 변수, 다항식 있습니다 P1 & (P2)를 가지고있다. 내 임무는 지금까지 잘 진행되고있는 다항식 계산기를 만드는 것입니다.
3x^2 == ((x2) 3)으로 다항식 요소를 유지하고 다항식 요소 목록을 반복적으로 통과하는 두 개의 함수를 만들었습니다.
3x^2와 2x^2를 합치려면 5x^2 (또는 "((x2) (3 + 2))")가됩니다.
나는 세 번째 목록을 가지고 있는데, 그 결과는 계산 될 때마다 추가됩니다.
문제점 : 두 요소를 함께 추가 할 수 있으므로 결과에 추가 할 임시 변수를 만듭니다. 그러나 전역 변수는 내가하는 일에도 불구하고 변경됩니다.
내가하자 등 람다, 다양한 기능, 나는 이제 며칠 붙어 봤는데 크게 도움 감사하겠습니다 시도했습니다 당신이 내게 줄 수 :)
는여기의 작은 예입니다 나는 무엇을 의미하는지 :
(setf p1 '((x 2) 2))
;2x^2
(setf p2 '((x 2) 3))
;3x^2
(if (equal (first p1) (first p2))
(progn
(setf temp p1)
(setf (second temp) (+ (second p1) (second p2)))
(append-to-result temp)
(print p1)
(print temp)))
출력 :
((× 2) 5)
,((× 2) 5)
빠른 답장을 보내 주셔서 감사합니다. –