여러 가지 경우에 여러 가지 기능을 구현하고 싶습니다. 가장 확실한 예는 특정 데이터베이스에서 추상화하는 것입니다. 각 데이터베이스에 대해Clojure의 추상 함수 또는 함수 인터페이스?
(ns dbbackend)
(abstractfn query [q])
(abstractfn persist! [o])
그리고 구현 :
나는 이런 식으로 뭔가를하고 싶은 것 speudo 코드에서interface DB {
ResultSet query(String query);
void persist(Object o);
...
}
: 객체 지향 언어에서는 이것에 대한 인터페이스를 사용합니다
(ns dbbackend.mysql :implements dbbackend)
(defn query [q] ...)
(defn persist! [o] ...)
Clojure와 같은 기능 언어에서 비슷한 작업을 수행하는 것이 가장 좋은 방법은 무엇인지 완전히 명확하지 않습니다. 멀티 메소드를 사용해야합니까?
멀티 메소드는 저에게도, 아마도 유일한 것 같습니다. 하지만 저는 Clojure에 대한 전문가가 아니므로 "실제"답변을하지 않겠습니다. +1하지만 좋은 질문입니다. –