이번 기사에서는 함수 「nth」 「last」 「assoc」에 대해 해설해 갑니다.
AutoLISP를 사용하면 모든 데이터를 목록이라는 변수에 저장할 수 있습니다. 리스트를 최대한 활용하기 위해서는 요소(리스트의 내용)를 취득하는 것이 필수가 됩니다.
요소를 취득하려면 전용의 함수를 사용합니다만, 각각 취득할 수 있는 요소가 다르므로 용도에 따른 구분이 필요합니다.
사용 예와 함께 해설하고 있으므로 꼭 봐 주세요.
목록의 요소를 얻는 함수에는 car와 cdr이 있습니다. 게다가 car와 cdr의 편성을 심플하게 표현한 cadr나 cadddr등도 있습니다만, 5번째 이후의 요소에는 대응하고 있지 않다고 하는 단점이 있습니다.
nth는 n번째 요소를 얻을 수 있으므로, 5번째 이후의 요소도 취득할 수 있습니다.
다음 목록에서 다섯 번째 요소(숫자 5)를 얻는 예를 설명합니다.
(setq lst (list 1 2 3 4 5 6))
nth 의 인수는 취득하고 싶은 요소의 번호와 대상의 리스트입니다. 프로그램 설명은 다음과 같습니다.
(nth 4 lst)
이때 요소 번호에 유의하십시오. 첫 번째 요소 번호는 0 이므로 다섯 번째 요소를 얻으려면 인수에 4를 지정합니다.
또, 최대의 요소 번호보다 큰 수치를 지정했을 경우는 nil 가 돌려주어집니다.
nth 구문과 인수 및 반환 값은 다음과 같습니다.
last는 이름과 같이 목록의 마지막 요소를 얻을 수 있는 함수입니다.
앞에서 설명한 nth로 목록의 마지막 요소를 얻으려면 목록의 요소 수를 확인해야합니다.
그러나 last의 인수는 목록뿐이므로 nth처럼 요소 수를 확인할 필요가 없습니다.
다음 목록에서 마지막 요소(숫자 5)를 검색하는 예를 설명합니다.
(setq lst (list 1 2 3 4 5))
프로그램 설명은 다음과 같습니다.
(last lst)
last 구문과 인수 및 반환값은 다음과 같습니다.
assoc은 목록을 키워드로 검색하고 키워드를 첫 번째 요소로 포함하는 리스트를 반환하는 함수입니다. 주로 도형 정의 데이터 등의 연상 리스트로부터 요소를 취득할 경우에 사용합니다.
다음의 연상 리스트로부터 1을 선두 요소에 가지는 요소(가운데의 요소)를 취득하는 예를 설명합니다.
(setq lst (list (cons 0 "a") (cons 1 "b") (cons 2 "c"))
인수는 키워드와 대상 목록이므로 프로그램 설명은 다음과 같습니다.
(assoc 1 lst)
이 경우의 반환값은 (1 . "b") 가 됩니다.
assoc의 특징으로서 키워드를 선두에 가지는 요소가 복수 있는 경우는 최초로 발견한 요소를 돌려 주므로 주의해 주세요.
다음 목록에서 키워드를 1로 assoc을 실행하면 반환 값은 앞에 가까운 두 번째 요소입니다.
(setq lst (list (cons 0 "a") (cons 1 "b") (cons 1 "bb"))
assoc의 구문과 인수 및 반환값은 다음과 같습니다.
이번 정리
리스트의 요소를 치환하는 함수 「subst」 (0) | 2021.12.26 |
---|---|
AutoLISP의 데이터 형식 변환 함수 (0) | 2021.12.25 |
AutoLISP의 도형 이름 함수 (0) | 2021.12.25 |
AutoLISP 선택 세트 ssget (0) | 2021.12.24 |
지정된 횟수만큼 반복하는 함수 "repeat" (0) | 2021.12.24 |
댓글 영역