'->' - это макрос.Я думаю, что лучший способ описать это в примере «точечной специальной формы», для которой он служит для того, чтобы сделать код более кратким и разборчивым, как указано в объяснении на веб-сайте clojure.org.Специальная форма Dot
(.. System (getProperties) (get "os.name"))
расширяется до:
(. (. System (getProperties)) (get "os.name"))
, но ее легче писать, читать и понимать.См. Также макрос ->, который можно использовать аналогичным образом:
(-> (System/getProperties) (.get "os.name"))
Также есть 'doto'.Допустим, у вас есть один объект, для которого вы хотите вызвать несколько последовательных сеттеров.Вы можете использовать «doto».
(doto person
(.setFName "Joe")
(.setLName "Bob")
(.setHeight [6 2]))
В приведенном выше примере сеттеры ничего не возвращают, делая «doto» соответствующим выбором.-> не будет работать вместо «doto», если сеттеры не вернут «this».
Итак, это некоторые методы, связанные с макросом ->.Я надеюсь, что это поможет объяснить не только то, что они делают, но и почему они существуют.