freeCodeCamp/guide/chinese/erlang/index.md

2.6 KiB
Raw Blame History

title localeTitle
Erlang 二郎神

二郎神

Erlang是一种函数式编程语言由爱立信开发用于电信应用。因为他们觉得电信系统有任何重大的停机时间是不可接受的所以Erlang的构建是除其他事项外

  • 分布式和容错_一块失败的软件或硬件不应该导致系统崩溃_
  • 并发_它可以产生许多进程每个进程执行一个小的定义明确的工作彼此隔离但能够通过消息进行通信_
  • 可热插拔_代码可以在运行时交换到系统中从而实现高可用性和最小的系统停机时间_

句法

Erlang大量使用递归 。由于数据在Erlang中是不可变的因此不允许使用whilefor循环(变量需要不断更改其值)。

这是一个递归的例子,显示了一个函数如何重复地从名称前面剥离第一个字母并打印它,只在遇到最后一个字母时停止。

-module(name). 
 
 -export([print_name/1]). 
 
 print_name([RemainingLetter | []]) -> 
  io:format("~c~n", [RemainingLetter]); 
 print_name([FirstLetter | RestOfName]) -> 
  io:format("~c~n", [FirstLetter]), 
  print_name(RestOfName). 

输出:

> name:print_name("Mike"). 
 M 
 i 
 k 
 e 
 ok 

还特别强调模式匹配 ,这通常消除了对if结构或case语句的需要。在以下示例中特定名称有两个匹配项后跟任何其他名称的catch-all。

-module(greeting). 
 
 -export([say_hello/1]). 
 
 say_hello("Mary") -> 
  "Welcome back Mary!"; 
 say_hello("Tom") -> 
  "Howdy Tom."; 
 say_hello(Name) -> 
  "Hello " ++ Name ++ ".". 

输出:

> greeting:say_hello("Mary"). 
 "Welcome back Mary!" 
 > greeting:say_hello("Tom"). 
 "Howdy Tom." 
 > greeting:say_hello("Beth"). 
 "Hello Beth." 

试试看

有些网站可以尝试运行Erlang命令而无需在本地安装任何东西例如

如果您想在您的(或虚拟)计算机上安装它,可以在Erlang.orgErlang Solutions上找到安装文件。

更多信息: