当前位置: 首页 > 编程笔记 >

Erlang原子

傅砚
2023-03-14
本文向大家介绍Erlang原子,包括了Erlang原子的使用技巧和注意事项,需要的朋友参考一下

示例

原子是具有仅由名称本身标识的名称的对象。

原子是在Erlang中使用原子文字定义的,

  • 以小写字母开头且仅包含字母,数字,下划线或@字符的无引号的字符串,或者

  • 用单引号引起来的字符串

例子

1> hello.
hello

2> hello_world.
hello_world

3> world_Hello@.
world_Hello@

4> '1234'.     
'1234'

5> '!@#$%% ä'.
'!@#$%% ä'

大多数Erlang程序中使用的原子

几乎每个Erlang程序中都会出现一些原子,特别是由于它们在标准库中的使用。

  • true和false用于表示相应的布尔值

  • ok 通常用作仅出于效果而调用的函数的返回值,或者用作返回值的一部分,在两种情况下均表示成功执行

  • 以同样的方式error用于表示错误情况,该情况不能保证上层函数尽早返回

  • undefined 通常用作未指定值的占位符

用作标签

ok并且error通常用作元组的一部分,其中元组的第一个元素表示成功,而其他元素包含实际的返回值或错误条件:

func(Input) ->
    case Input of
        magic_value ->
            {ok, got_it};
        _ ->
            {error, wrong_one}
    end.

{ok, _} = func(SomeValue).

存储

使用原子时要记住的一件事是,它们被存储在内存中自己的全局表中,并且该表未进行垃圾回收,因此动态创建原子,尤其是在强烈建议用户不影响原子名称的情况下。

 类似资料:
  • 在 Erlang/OTP 中有一个基本概念叫监督树。这是一种建立在督程与佣程思想上的进程结构化模型。

  • Erlang shell 被用于表达式的测试。因此,测试可以在 shell 进行,这是在实际的应用程序运行之前进行测试。 下面的例子展示了如何在 shell 中添加表达式并使用。这里需要指出的是,表达需要使用(.)定界符来作为结束符。 执行该命令后,shell 打印出另一个提示,此时为命令编号为2(因为指令数在每次输入新命令后增加)。 以下函数在 Erlang Shell 最常见的。 b() − 

  • Erlang 版本的 socket.io 服务器实现

  • maestro 是 Erlang 池管理程序。 为什么? 短暂 I/O 任务(比如数据库访问)的大型 worker 池会因为太多迁入和迁出活动而拖垮单个 poolboy 管理器。 怎样做? 使用简单的方法,启动多个池;随机迁出。maestro 需要了解每个池的工作流,当每个池都是同一类型的加载模式时,将会提升复杂性,降低性能,没有什么明显的优势。 使用: MaestroName = many_po

  • 随着Erlang和FP的普及,总有人想把Erlang用在Web开发上。 虽然这不一定是个靠谱的想法,但是,还是看上去很美的想法。 Nitrogen 就是其中一个实现。它主要关注在快速开发交互密集型的Web,喜欢Erlang的童鞋可以看一下。

  • Erlang SPDY 是 Erlang 实现对 SPDY 协议的支持。