Các hàm xử lý danh sách nâng cao

Một phần của tài liệu Tìm hiểu ngôn ngữ AutoLISPVàỨng dụng trong AutoCAD (Trang 26)

2. Giới thiệu chung

3.6.4 Các hàm xử lý danh sách nâng cao

a. Hàm ASSOC (Association): trả về danh sách con trong danh sách phức.

• Cú pháp: (Assoc item alist)

 Alist phải là danh sách phức hợp.

 Item là phần tử đầu tiên của danh sách con trả về.

• Ví dụ: danh sách Form chứa chiều dài, chiều rộng, chiều cao và thể tích một khối chữ nhật.

(setq Form ‘((chieudai 185.0) (chieurong 75.0) (chieucao 45.0) (thetich 624370.0)))

(cadr (assoc ‘chieudai Form)) ; trả về 185.0 (cadr (assoc ‘chieurong Form)) ; trả về 75.0 (cadr (assoc ‘chieucao Form)) ; trả về 45.0 (cadr (assoc ‘thetich Form)); trả về 624370.0 b. Hàm CONS

• Các danh sách con trong danh sách phức hợp có các dạng khác nhau và có thể chứa nhiều phần tử. Một dạng thường gặp của danh sách con là dotted pair. Đây là dạng danh sách chứa hai phần tử cách nhau bởi dấu chấm. AutoLISP thường dùng dạng danh sách này để lưu trữ và truy xuất dữ liệu lấy từ cơ sở dữ liệu các đối tượng của AutoCAD.

• Hàm cons có hai tham số. Nếu tham số thứ hai là một danh sách, hàm này sẽ bổ sung tham số thứ nhất vào vị trí đầu tiên trong danh sách này.

• Cú pháp: (cons new-first-element list)

• Ví dụ:

(setq a 100)

(cons 10 ‘(50 40 60)) ; trả về (10 50 40 60) (cons ‘a ‘(b v)) ; trả về (a b v) (cons a ‘(b v)) ; trả về (100 b v)

• Nếu tham số thứ hai là kiểu dữ liệu không phải dạng danh sách, hàm sẽ trả về dạng dotted pair.

• Ví dụ: (setq A 10 B “Muoi”)

(cons 1 “mot”) ; trả về (1 . “mot”) (cons A B) ;trả về (10 . “muoi”) (cons ‘(1 2 3) A) ; trả về ((1 2 3) . 10)

b. Hàm MEMBER: Duyệt danh sách list để tìm xem expr có là phần tử của danh sách này hay không. Nếu tìm thấy, kết quả trả về là phần tử còn lại của danh sách list, bắt đầu từ phần tử expr.

• Cú pháp: (member expr alist)

• Hàm member kết hợp với hàm assoc, cxxxxr để giảm bớt các biểu thức điều kiện.

• Ví dụ:

(setq X ‘(1 2 3 4))

(member 2 X) ; trả về (2 3 4) (member 5 X) ; trả về nil

d. Hàm REVERSE: trả về danh sách theo thứ tự ngược lại.

• Cú pháp: (Reverse list)

• Ví dụ : (setq X ‘(1 2 3 4))

(reverse X) ; trả về 4 3 2 1 e. Hàm NTH: lấy ra phần tử ở vị trí n trong danh sách.

• Cú pháp: (NTH n list)

• Vị trí các phần tử trong danh sách được đánh số bắt đầu từ 0

• Ví dụ :

(setq X ‘(5 6 12 78 3 98 1 2 )) (nth 3 X) ;trả về 78 (nth 5 X) ;trả về 98

Một phần của tài liệu Tìm hiểu ngôn ngữ AutoLISPVàỨng dụng trong AutoCAD (Trang 26)

Tải bản đầy đủ (DOC)

(56 trang)
w