mam*_*mcx 19 syntax erlang elixir
根据http://elixir-lang.org/getting-started/basic-types.html#atoms:
原子是常量,其名称是它们自己的值.其他一些语言称这些符号
我想知道原子类型有什么意义.可能有助于构建解析器或宏?但在日常使用中它对程序员有何帮助?
BTW:永远不要使用elixir或erlang,只需注意它存在(也在kdb中)
mip*_*adi 53
它们基本上是可以轻松测试平等的字符串.
考虑一个字符串.从概念上讲,如果字符串具有相同的内容,我们通常希望将字符串视为相等.例如,"dog"=="dog"但"dog"!="cat".然而,检查字符串的平等,我们要检查,看是否在一个字符串中的每个字母是等于在相同位置的字母在另一个字符串,这意味着我们必须通过字符串中的每个元素走路,检查每个平等的性格.如果处理Unicode字符串并且必须考虑组成相同字符的不同方式(例如,字符é在UTF-8中有两个表示),这会变得有点麻烦.
如果我们在内存中的相同位置存储相同的字符串会更简单.然后,检查相等性将是一个简单的指针或索引比较.
由于在内存中的相同位置存储相同的字符串的结果,我们还可以存储每个唯一一种字符串的一个副本,无论它是如何多次在程序中使用,这样可以节省常用字符串的一些记忆.
在更高的层次上,使用原子也让我们像对整数等其他原始数据类型一样考虑字符串.
我认为,erlang中最常见的用法之一是标记变量和消息,这有利于快速比较(模式匹配),如mipadi所说.
例如,根据提供的参数,与服务器的连接状态或任何原因编写可能失败的函数.一个非常频繁的用法是在成功的情况下返回元组{ok,Value},如果出错则返回{error,Reason}.调用函数可以选择仅管理成功案例编码{ok,Value} = yourModule:yourFunction(Param...).这样做很明显,你只考虑成功案例,直接从函数返回中提取值,它很快,你不必与yourModule共享任何头来解码ok原子.
在消息中,你会经常看到喜欢的东西{add,Key,Value},{delete,Key},{delete_all},{replace,Key,Value},{append,Key,Value}...这些都是明确的消息,与前面提到的相同的优点:快速,明智的,无分头的...