我在这里探索源代码:
https://github.com/s1n4/leptus/blob/master/include/leptus_logger.hrl
注意到这样定义的记录:
-record(log_data,
{
request_time = erlang:localtime() :: calendar:datetime(),
response_time :: undefined | calendar:datetime(),
request_line = "" :: string(),
ip :: inet:ip_address(),
version = 'HTTP/1.1' :: atom(),
method = <<"GET">> :: binary(),
uri = <<"/">> :: binary(),
headers = [] :: [{binary(), iodata()}],
status = 200 :: non_neg_integer(),
content_length = 0 :: non_neg_integer()
}).
我只知道&#39;双冒号&#39;用于列表推导和类型。从来没有发现任何关于记录的事搜索也没有帮助。 我将其解释为:
'request_time' is 'erlang:local time()' of type 'calendar:date time()'
response_time is of type undefined or calendar:datetime
and so on ...
这是对的吗?
答案 0 :(得分:10)
是的,你是对的。您可以在记录定义中包含类型信息。实际上,这是记录中最酷的一个方面,而且我很少使用它。
您要查找的文档部分有点难以找到,但 已记录:
http://www.erlang.org/doc/reference_manual/typespec.html#typeinrecords