二郎神

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上找到安装文件。

更多信息:


Contributing to the Guide

This open source guide is curated by thousands of contributors. You can help by researching, writing and updating these articles. It is an easy and fun way to get started with contributing to open source.