Erlang:是一个没有双引号的名字,仍然是一个字符串或者其他?

Tro*_*yvs 0 string variables shell erlang quote

我是erlang的新手,只是试过shell:

Eshell V8.2  (abort with ^G)
1> Hello=hello.
hello
2> Hello.
hello
3> Point={point,10,45}.
{point,10,45}
4> Point2={"point",10,45}.
{"point",10,45}
Run Code Online (Sandbox Code Playgroud)

在"Point"中,第一个元素是'point',没有名为point的变量,所以它不是引用,没有double"",所以它不是一个字符串.但是shell不报告任何错误.

那是什么?

Asi*_*aga 6

它是一个原子.从文档:

是一个文字,一个带名字的常数.如果原子不以小写字母开头或者包含除字母数字字符,下划线()或@_ 之外的其他字符,则用单引号(')括起来

所以point这是一个有效的Erlang术语.同样的想法也适用hello.