2010-02-12 20 views
5

Tôi đang cố gắng viết một hàm kiểm tra xem ký tự có nằm trong phạm vi thập lục phân nhất định không.Làm cách nào để xác định liệu một nhân vật có nằm trong phạm vi của Clojure không?

Tôi đang cố gắng mã hiển thị dưới đây:

(def current \s) 
(and (>= current (char 0x20)) (<= current (char 0xD7FF))) 

tôi nhận được lỗi sau:

java.lang.ClassCastException: java.lang.Character cannot be cast to 
java.lang.Number (NO_SOURCE_FILE:0) 

tôi giả vì> = điều hành hy vọng một con số, nó cố gắng gõ cast nó .Trong java thông thường, tôi chỉ có thể thực hiện:

(current >= 0x20) && (current <= 0xD7FF) 

Trả lời

8

chuyển đổi rõ ràng thành đầu tiên

(<= 0x20 (int current) 0xD7FF) 
3

Ký tự không phải là số trong Clojure mặc dù thật dễ dàng đưa chúng vào các ký tự với hàm int.

(number? \a)  => false 
(number? 42)  => true 
(number? (int \a)) => true 

Đối với phôi loại nguyên thủy, bạn có thể sử dụng chức năng với tên loại bạn muốn (xem (find-doC#"Coerce")).

(int (char 0x20)) 
(float ...) 
(map double [1 2 3 4]) 
.... 
Các vấn đề liên quan