Đây là tài liệu Clojure cho Từ khóa và Biểu tượng.
Từ khóa là định danh tượng trưng để tự đánh giá. Họ cung cấp các bài kiểm tra công bằng rất nhanh ...
Biểu tượng là các định danh thường được sử dụng để chỉ một cái gì đó khác. Chúng có thể được sử dụng trong các hình thức chương trình để tham chiếu các tham số chức năng, cho phép các ràng buộc, tên lớp và vars toàn cầu ...
Các từ khóa thường được sử dụng như "các chuỗi không đổi" nhẹ, ví dụ như các khóa của bản đồ băm hoặc các giá trị công văn của đa phương thức. Các biểu tượng thường được sử dụng để đặt tên biến và hàm và nó ít phổ biến hơn để thao tác chúng dưới dạng đối tượng trực tiếp ngoại trừ trong macro và như vậy. Nhưng không có gì ngăn bạn sử dụng một biểu tượng ở mọi nơi bạn sử dụng từ khóa (nếu bạn không nhớ trích dẫn chúng mọi lúc).
Cách dễ nhất để thấy sự khác biệt là đọc Keyword.java
và Symbol.java
trong nguồn Clojure. Có một vài sự khác biệt thực hiện rõ ràng. Ví dụ: Biểu tượng trong Clojure có thể có siêu dữ liệu và Từ khóa không thể.
Ngoài cú pháp dấu hai chấm đơn, bạn có thể sử dụng dấu hai chấm để tạo từ khóa đủ điều kiện không gian tên.
user> :foo
:foo
user> ::foo
:user/foo
Lisp thông thường có từ khóa, cũng như Ruby và các ngôn ngữ khác. Họ hơi khác nhau trong các ngôn ngữ tất nhiên. Một số khác biệt giữa từ khóa Lisp thông thường và từ khóa Clojure:
Từ khóa trong Clojure không phải là Biểu tượng.
user> (symbol? :foo)
false
Từ khóa không thuộc về bất kỳ không gian tên nào trừ khi bạn đủ điều kiện sử dụng chúng:
user> (namespace :foo)
nil
user> (namespace ::foo)
"user"
(Cảm ơn Rainer Joswig đã cho tôi ý tưởng về những thứ cần xem xét.)