Wir verwenden in der Regel Erbauer in Java, wie folgt aus:Was ist der Clojure-Weg zum Builder-Muster?
UserBuilder userBuilder = new UserBuilder();
User John = userBuiler.setName("John")
.setPassword("1234")
.isVip(true)
.visableByPublic(false)
.build();
Einige der Attribute Standardwert haben, und einige nicht.
Attribute in einer Karte Passing kann eine Lösung sein, aber es macht das Argument wirklich mehr:
(def john (make-user {:name "John" :pass "1234" :vip true :visible false}))
Also, meine Frage ist, gibt es eine elegante Möglichkeit, dies zu erreichen?
Der Erbauer ist meiner Meinung nach wirklich nur eine Arbeit um für einen Mangel an benannten Parametern. Das Initialisieren einer Gruppe von Feldern, die nur als Positionsargumente unterschieden werden, ist äußerst umständlich und sehr schwer später zu lesen, daher das Builder-Muster. Das Destrukturieren von Karten erreicht die gleichen Ziele in einem einzigen Funktionsaufruf, da Ankur vorschlägt, eine Karte auf mehrere Zeilen aufzuteilen, um die Lesbarkeit zu gewährleisten. –