LISP - ตัวละคร
ใน LISP อักขระจะแสดงเป็นวัตถุข้อมูลประเภท character.
คุณสามารถแสดงออบเจ็กต์อักขระที่อยู่หน้า # \ ก่อนอักขระ ตัวอย่างเช่น # \ a หมายถึงอักขระก.
ช่องว่างและอักขระพิเศษอื่น ๆ สามารถแสดงได้โดยนำหน้า # \ ก่อนชื่อของอักขระ ตัวอย่างเช่น # \ SPACE แทนอักขระช่องว่าง
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงสิ่งนี้ -
ตัวอย่าง
สร้างไฟล์ซอร์สโค้ดใหม่ชื่อ main.lisp และพิมพ์รหัสต่อไปนี้
(write 'a)
(terpri)
(write #\a)
(terpri)
(write-char #\a)
(terpri)
(write-char 'a)
เมื่อคุณรันโค้ดจะส่งคืนผลลัพธ์ต่อไปนี้ -
A
#\a
a
*** - WRITE-CHAR: argument A is not a character
อักขระพิเศษ
LISP ทั่วไปอนุญาตให้ใช้อักขระพิเศษต่อไปนี้ในรหัสของคุณ พวกเขาเรียกว่าอักขระกึ่งมาตรฐาน
- #\Backspace
- #\Tab
- #\Linefeed
- #\Page
- #\Return
- #\Rubout
ฟังก์ชั่นการเปรียบเทียบตัวละคร
ฟังก์ชันและตัวดำเนินการเปรียบเทียบตัวเลขเช่น <และ> ไม่ทำงานกับอักขระ Common LISP มีฟังก์ชันอีกสองชุดสำหรับการเปรียบเทียบอักขระในโค้ดของคุณ
ชุดหนึ่งพิจารณาตามตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
ตารางต่อไปนี้แสดงฟังก์ชัน -
ฟังก์ชันที่ละเอียดอ่อนของตัวพิมพ์เล็กและใหญ่ | ฟังก์ชันที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ | คำอธิบาย |
---|---|---|
ถ่าน = | ถ่านเท่ากับ | ตรวจสอบว่าค่าของตัวถูกดำเนินการทั้งหมดเท่ากันหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง |
ถ่าน / = | ถ่านไม่เท่ากัน | ตรวจสอบว่าค่าของตัวถูกดำเนินการทั้งหมดแตกต่างกันหรือไม่หากค่าไม่เท่ากันเงื่อนไขจะกลายเป็นจริง |
ถ่าน < | ถ่านน้อย p | ตรวจสอบว่าค่าของตัวถูกดำเนินการลดลงอย่างจำเจหรือไม่ |
ถ่าน> | ถ่านยิ่งใหญ่ | ตรวจสอบว่าค่าของตัวถูกดำเนินการเพิ่มขึ้นอย่างจำเจหรือไม่ |
ถ่าน <= | ถ่านไม่ใหญ่กว่า | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายมากกว่าหรือเท่ากับค่าของตัวถูกดำเนินการด้านขวาถัดไปหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง |
ถ่าน> = | ถ่านไม่น้อยหน้า | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายน้อยกว่าหรือเท่ากับค่าของตัวถูกดำเนินการด้านขวาหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง |
ตัวอย่าง
สร้างไฟล์ซอร์สโค้ดใหม่ชื่อ main.lisp และพิมพ์รหัสต่อไปนี้
; 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))
เมื่อคุณรันโค้ดจะส่งคืนผลลัพธ์ต่อไปนี้ -
NIL
T
NIL
T
NIL
T
NIL