2015-07-29 15 views
6

Tôi đang học Racket (nhưng có lẽ câu trả lời sẽ tương tự như trong bất kỳ Đề án và ngôn ngữ bắt nguồn từ chương trình) và tự hỏi làm thế nào để lọc ra false (#f) giá trị từ một danh sách. Điều tốt nhất tôi đã đưa ra là:Làm thế nào để lọc ra các giá trị sai từ danh sách trong vợt

(filter (lambda (x) 
      (not (eq? x #false))) 
     '("a" "b" #f 1 #f "c" 3 #f)) 

'("a" "b" 1 "c" 3) ;; output 

Tuy nhiên, tôi đoán có phải là một giải pháp đơn giản hơn.

Trả lời

8

Bạn chỉ có thể làm

(filter identity '("a" "b" #f 1 #f "c" 3 #f)) 

như bất cứ điều gì không #F được coi là đúng.

+7

Ngoài ra, bạn có thể thấy mã Racket sử dụng 'giá trị' thay vì' danh tính' (ví dụ: khi ai đó đang sử dụng '#lang vợt/base' và không muốn' (yêu cầu vợt/hàm) 'chỉ lấy 'danh tính'). –

Các vấn đề liên quan