@@ -119,15 +119,18 @@ defmodule Record do
119
119
arities will be defined to manipulate the underlying record:
120
120
121
121
# To create records
122
- user() #=> {:user, "José", 25}
123
- user(age: 26) #=> {:user, "José", 26}
122
+ record = user() #=> {:user, "José", 25}
123
+ record = user(age: 26) #=> {:user, "José", 26}
124
124
125
125
# To get a field from the record
126
126
user(record, :name) #=> "José"
127
127
128
128
# To update the record
129
129
user(record, age: 26) #=> {:user, "José", 26}
130
130
131
+ # Convert a record to a keyword list
132
+ user(record) #=> [name: "José", age: 26]
133
+
131
134
By default, Elixir uses the record name as the first element of
132
135
the tuple (the tag). But it can be changed to something else:
133
136
@@ -192,9 +195,7 @@ defmodule Record do
192
195
Keyword . keyword? ( args ) ->
193
196
create ( atom , fields , args , caller )
194
197
true ->
195
- quote bind_quoted: [ atom: atom , fields: fields , args: args ] do
196
- Record . __keyword__ ( atom , fields , args )
197
- end
198
+ quote do: Record . __keyword__ ( unquote ( atom ) , unquote ( fields ) , unquote ( args ) )
198
199
end
199
200
end
200
201
0 commit comments