Tôi nghĩ rằng use
sẽ làm điều đó nhưng có vẻ như ánh xạ được tạo trong không gian tên hiện tại không được công khai. Dưới đây là một ví dụ về những gì tôi muốn đạt được:Tôi có thể tham chiếu một không gian tên khác và hiển thị các chức năng của nó như là công khai cho các ns hiện tại không?
(ns my-ns
(:use [another-ns :only (another-fct)]))
(defn my-fct
[]
(another-fct 123)) ; this works fine
Sau đó, tôi có một không gian tên như thế này:
(ns my-ns-2
(:require [my-ns :as my]))
(defn my-fct-2
[]
(my/another-fct 456)) ; this doesn't work
Tôi muốn làm điều đó vì another-ns
là một thư viện để truy cập vào một cơ sở dữ liệu . Tôi muốn cô lập tất cả các cuộc gọi đến thư viện này trong một không gian tên duy nhất (my-ns
), theo cách này, tất cả các hàm phụ thuộc DB sẽ được tách biệt trong một không gian tên duy nhất và trở nên dễ dàng chuyển sang DB khác nếu cần.
Một số chức năng của thư viện này chỉ tốt cho tôi nhưng tôi muốn tăng thêm cho người khác. Hãy nói rằng các chức năng đọc là tốt nhưng tôi muốn tăng cường các chức năng ghi với một số xác nhận.
Cách duy nhất tôi thấy cho đến thời điểm này là mã hóa tất cả ánh xạ thành my-ns
ngay cả đối với các chức năng tôi không tăng thêm.
Thật tuyệt vời! Tôi đã chuyển dấu chấp nhận cho bạn. Cảm ơn. – Damien
Hmm. Hữu ích, nhưng dường như bị giới hạn ở các không gian tên có chứa các hàm một mình: 'Không thể lấy giá trị của macro '. –