You can refer-in the first (factory function) to another namespace; for the
second you'd have to import the class. I prefer the first. The third is
special syntax for the reader.
As to the last question, I don't know, but it allows you to define your
own. For example,
(defrecord Book [title author]
clojure.lang.IFn
(invoke [this x] (get this x))
(invoke [this x not-found] (get this x not-found)))
(def b (->Book "Lord of the Rings", "Tolkien"))
(b :title) ;=> "Lord of the Rings"
But you could alter the behavior as desired.
On Wednesday, April 9, 2014 1:51:01 PM UTC-5, Anthony Ortiz wrote:
>
> I see that there are several ways of instantiating a record :
>
>
> (->Book "Lord of the Rings", "Tolkien")
>
> (Book. "Lord of the Rings", "Tolkien")
>
> #user.Book{:title "Lord of the Rings", :author "Tolkien"}
>
>
> Questions :
> 1) The second version is referred to as the "original" version so I'm
> wondering which is the preferred method.
> 2) Why is the third version not within a list? I thought that for the
> language to consider something "callable" it had to be the first argument
> in a list (eg : (+ 1 2))
> 3) The record that is returned via (def b [version of choice goes here])
> is treated as a map when using the form (:title b) but doesn't treat it as
> a map when using the form (b :title) which seems pretty inconsistent to me;
> is there are valid reason for this inconsistency? I'm sure I'm missing
> something.
>
> Thanks!
>
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.