LISP - Nhân vật
Trong LISP, các ký tự được biểu diễn dưới dạng các đối tượng dữ liệu kiểu character.
Bạn có thể biểu thị một đối tượng ký tự đứng trước # \ trước chính ký tự đó. Ví dụ, # \ a có nghĩa là ký tự a.
Dấu cách và các ký tự đặc biệt khác có thể được ký hiệu bằng dấu # \ trước tên của ký tự. Ví dụ: # \ SPACE đại diện cho ký tự khoảng trắng.
Ví dụ sau đây chứng minh điều này -
Thí dụ
Tạo một tệp mã nguồn mới có tên main.lisp và nhập mã sau vào đó.
(write 'a)
(terpri)
(write #\a)
(terpri)
(write-char #\a)
(terpri)
(write-char 'a)
Khi bạn thực thi mã, nó trả về kết quả sau:
A
#\a
a
*** - WRITE-CHAR: argument A is not a character
Ký tự đặc biệt
LISP chung cho phép sử dụng các ký tự đặc biệt sau trong mã của bạn. Chúng được gọi là các ký tự bán chuẩn.
- #\Backspace
- #\Tab
- #\Linefeed
- #\Page
- #\Return
- #\Rubout
Các chức năng so sánh nhân vật
Các hàm và toán tử so sánh số, như, <và> không hoạt động trên các ký tự. Common LISP cung cấp hai bộ chức năng khác để so sánh các ký tự trong mã của bạn.
Một bộ phân biệt chữ hoa chữ thường và tập hợp kia không phân biệt chữ hoa chữ thường.
Bảng sau cung cấp các chức năng:
Các chức năng phân biệt chữ hoa chữ thường | Các chức năng phân biệt chữ hoa chữ thường | Sự miêu tả |
---|---|---|
char = | char-bằng | Kiểm tra xem các giá trị của các toán hạng có bằng nhau hay không, nếu có thì điều kiện trở thành true. |
char / = | char-not-bằng | Kiểm tra xem giá trị của các toán hạng có khác nhau hay không, nếu các giá trị không bằng nhau thì điều kiện trở thành true. |
char < | char-lessp | Kiểm tra xem giá trị của các toán hạng có giảm đơn điệu hay không. |
char> | char-greatp | Kiểm tra xem giá trị của các toán hạng có tăng đơn điệu hay không. |
char <= | char-not-greatp | Kiểm tra xem giá trị của bất kỳ toán hạng bên trái nào lớn hơn hoặc bằng giá trị của toán hạng bên phải tiếp theo hay không, nếu có thì điều kiện trở thành true. |
char> = | char-not-lessp | Kiểm tra xem giá trị của bất kỳ toán hạng bên trái nào nhỏ hơn hoặc bằng giá trị của toán hạng bên phải của nó hay không, nếu có thì điều kiện trở thành true. |
Thí dụ
Tạo một tệp mã nguồn mới có tên main.lisp và nhập mã sau vào đó.
; case-sensitive comparison
(write (char= #\a #\b))
(terpri)
(write (char= #\a #\a))
(terpri)
(write (char= #\a #\A))
(terpri)
;case-insensitive comparision
(write (char-equal #\a #\A))
(terpri)
(write (char-equal #\a #\b))
(terpri)
(write (char-lessp #\a #\b #\c))
(terpri)
(write (char-greaterp #\a #\b #\c))
Khi bạn thực thi mã, nó trả về kết quả sau:
NIL
T
NIL
T
NIL
T
NIL