Syntax “什么是”呢&引用;在二郎是什么意思?

Syntax “什么是”呢&引用;在二郎是什么意思?,syntax,erlang,Syntax,Erlang,在Erlang语法中“#”是什么意思 例如: Request#radius_packet.attrs Request是记录绑定到的变量 #表示变量是记录 radius\u packet是记录的名称 attrs是从记录访问的字段。散列标记在Erlang中可以表示两种含义:引用记录或引用映射 上面的具体情况是引用变量名为Request、类型为radius\u packet、访问字段attrs的记录。此语法模拟了在其他语言中访问结构或对象上的字段(但要小心,因为它不同)。它直接等同于引用该字段作为

在Erlang语法中“#”是什么意思

例如:

 Request#radius_packet.attrs

Request
是记录绑定到的变量

#
表示变量是记录

radius\u packet
是记录的名称


attrs
是从记录访问的字段。

散列标记在Erlang中可以表示两种含义:引用记录或引用映射

上面的具体情况是引用变量名为
Request
、类型为
radius\u packet
、访问字段
attrs
的记录。此语法模拟了在其他语言中访问结构或对象上的字段(但要小心,因为它不同)。它直接等同于引用该字段作为变量赋值的一部分,然后使用该变量。以下三个版本的
some\u function/1
在传递给
do\u some/1
的内容方面都是等效的:

some_function(Request = #radius_packet{attrs = Attrs}) ->
    do_something(Attrs),
    % Other things where we need Request also...

some_function(#radius_packet{attrs = Attrs}) ->
    do_something(Attrs),
    % Other things where we don't need Record...

some_function(Request) ->
    do_something(Request#radius_packet.attrs),
    % etc...
记录是一种元语法;它们是一种预处理器便利,实际上在编译之前被转换成元组(这就是为什么记录如此之快)。因此,根据以下对
#radius_packet{}
的定义,以下版本的
某些函数
与上述函数完全相同:

-record #radius_packet{serial, headers, attrs}.

some_function({radius_packet, _, _, Attrs}) ->
    do_something(Attrs),
    % Other things where we don't need Record...
上面的版本只是忽略了记录语法,而倾向于写出将由预处理器创建的底层元组

您将看到散列的另一个地方是在映射中。使用散列的映射语法与记录语法类似,但在散列和开头的花括号之间没有任何类型名称:

AMap#{}
ARecord#record_type{}