LISP - Simbol

Dalam LISP simbol adalah nama yang merepresentasikan objek data dan yang menarik juga merupakan objek data.

Apa yang membuat simbol spesial adalah mereka memiliki komponen yang disebut property list, atau plist.

Daftar Properti

LISP memungkinkan Anda untuk menetapkan properti ke simbol. Misalnya, mari kita memiliki objek 'orang'. Kami ingin objek 'orang' ini memiliki properti seperti nama, jenis kelamin, tinggi badan, berat badan, alamat, profesi, dll. Properti itu seperti nama atribut.

Daftar properti diimplementasikan sebagai daftar dengan elemen bilangan genap (kemungkinan nol). Setiap pasangan elemen dalam daftar merupakan entri; item pertama adalahindicator, dan yang kedua adalah value.

Saat simbol dibuat, daftar propertinya pada awalnya kosong. Properti dibuat dengan menggunakanget dalam a setf bentuk.

Misalnya, pernyataan berikut memungkinkan kita untuk menetapkan judul properti, penulis dan penerbit, dan nilai masing-masing, ke objek bernama (simbol) 'buku'.

Contoh 1

Buat file kode sumber baru bernama main.lisp dan ketikkan kode berikut di dalamnya.

(write (setf (get 'books'title) '(Gone with the Wind)))
(terpri)
(write (setf (get 'books 'author) '(Margaret Michel)))
(terpri)
(write (setf (get 'books 'publisher) '(Warner Books)))

Saat Anda menjalankan kode, ia mengembalikan hasil berikut -

(GONE WITH THE WIND)
(MARGARET MICHEL)
(WARNER BOOKS)

Berbagai fungsi daftar properti memungkinkan Anda menetapkan properti serta mengambil, mengganti, atau menghapus properti simbol.

Itu getfungsi mengembalikan daftar properti simbol untuk indikator tertentu. Ini memiliki sintaks berikut -

get symbol indicator &optional default

Itu getfungsi mencari daftar properti dari simbol yang diberikan untuk indikator yang ditentukan, jika ditemukan maka ia mengembalikan nilai yang sesuai; jika tidak default dikembalikan (atau nihil, jika nilai default tidak ditentukan).

Contoh 2

Buat file kode sumber baru bernama main.lisp dan ketikkan kode berikut di dalamnya.

(setf (get 'books 'title) '(Gone with the Wind))
(setf (get 'books 'author) '(Margaret Micheal))
(setf (get 'books 'publisher) '(Warner Books))

(write (get 'books 'title))
(terpri)
(write (get 'books 'author))
(terpri)
(write (get 'books 'publisher))

Saat Anda menjalankan kode, ia mengembalikan hasil berikut -

(GONE WITH THE WIND)
(MARGARET MICHEAL)
(WARNER BOOKS)

Itu symbol-plist fungsi memungkinkan Anda untuk melihat semua properti simbol.

Contoh 3

Buat file kode sumber baru bernama main.lisp dan ketikkan kode berikut di dalamnya.

(setf (get 'annie 'age) 43)
(setf (get 'annie 'job) 'accountant)
(setf (get 'annie 'sex) 'female)
(setf (get 'annie 'children) 3)

(terpri)
(write (symbol-plist 'annie))

Saat Anda menjalankan kode, ia mengembalikan hasil berikut -

(CHILDREN 3 SEX FEMALE JOB ACCOUNTANT AGE 43)

Itu remprop fungsi menghapus properti tertentu dari simbol.

Contoh 4

Buat file kode sumber baru bernama main.lisp dan ketikkan kode berikut di dalamnya.

(setf (get 'annie 'age) 43)
(setf (get 'annie 'job) 'accountant)
(setf (get 'annie 'sex) 'female)
(setf (get 'annie 'children) 3)

(terpri)
(write (symbol-plist 'annie))
(remprop 'annie 'age)
(terpri)
(write (symbol-plist 'annie))

Saat Anda menjalankan kode, ia mengembalikan hasil berikut -

(CHILDREN 3 SEX FEMALE JOB ACCOUNTANT AGE 43)
(CHILDREN 3 SEX FEMALE JOB ACCOUNTANT)