# Erlang与Elixir的语法比较
# 一、原子
# Erlang
在Erlang里,原子被用于表示常量值。
原子以小写字母开头,后接一串字母、 数字、 下划线(_)或at(@)符号, 例如red、 december、cat、 meters、 yards、 joe@somehost和a_long_name。
原子还可以放在单引号(')
内。可以用这种引号形式创建以大写字母开头(否则会被解释成变量)或包含字母
数字以外字符的原子,例如'Monday'、 'Tuesday'、 '+'、 '*'和'an atom with spaces'
。甚至可以给
无需引号的原子加上引号,因此'a'
和a
的意思完全一致。在某些语言里,单引号和双引号可以互换使用。
Erlang里不是这样。单引号的用法如前面所示,双引号用于给字符串字面量(string literal)定界。
一个原子的值就是它本身。所以,如果输入一个原子作为命令, Erlang shell就会打印出这个
原子的值。
1> hello
hello
1
2
2
你可能会觉得讨论原子或整数的值有点奇怪。但因为Erlang是一种函数式编程语言,每个表 达式都必须有一个值。这包括了整数和原子,它们只不过是极其简单的表达式。
# Elixir
在elixir 中原子以 :
开头,其后紧跟一个原子单词或者Elixir运算符。原子单词由字母、数字、下划线和符号“@”组成,
以感叹号或问号结尾。可以创建一个任意支付序列组成的原子,只要其包含在双引号
里并以冒号
开头。下面都是原子类型的数
据:
:fred :is_binary? :var@2 :<> :=== :"func/3" :"long long summergao"
1
原子的名字就是它的值。两个同名原子总是相等的,即使它们是由相隔万里的两台不同计算机的不同应用程序创建的。