erlang语言基础教程

文章介绍了Erlang的基本数据类型,如数字和原子,并提及特殊原子true和false。接着讨论了运算符,包括算术、关系、逻辑和位运算。条件语句部分主要讲解了case语句和if语句的用法。文章指出Erlang没有传统意义上的循环结构,但可以通过递归实现类似功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

erlang教程基础入门🔥编程基础🔥数据结构🔥递归🔥并发编程
elixir教程基础入门🔥编程基础🔥模式匹配🔥递归枚举

基本类型

erlang中,基本的数据类型是数字Number和原子AtomNumber又包括整数和浮点数。erlang中提供了一些用于数值的函数

类别函数
三角函数sin, cos, tan, asin, acos, atan
其他函数exp, log, abs
类型函数float, is_float, is_integer

前面提到,原子必须以小写字母开头,其实并不完全。通过单引号括起来的字符也可以当作原子。

Erlang中有两个特殊的原子,即truefalse,属于布尔类型。

此外,erlang中还有位串、元组、映射、列表等类型,相对复杂,故放在后面讲解。

运算符

类别运算符备注
算术+ - * / rem divrem为求余;div为取整
关系==, /=, <, =<, >, >=/=为不等号
逻辑and, or, not, xor对应与、或、非、异或
位运算band, bor, bnot, bxor对应与、或、非、异或

条件语句

erlang中最容易理解的条件语句其实是case,以下面代码为例

-module(testCase).
-export([case567/1]).

case567(A)->
    case A of
        5 -> io:fwrite("you input 5");
        6 -> io:fwrite("you input 6");
        7 -> io:fwrite("you input 7")
    end.

编译之后结果如下

1> c("testCase").
{ok,testCase}
2> testCase:case567(5).
you input 5ok
3> testCase:case567(6).
you input 6ok
4> testCase:case567(7).
you input 7ok
5> testCase:case567(8).
** exception error: no case clause matching 8
     in function  testCase:case567/1 (testCase.erl, line 5)

看来不能输入8,而且貌似case并没有default的选项,但是没关系,erlang提供了if语句。或者更准确一点说,是提供了if形式的case语句,具体示例如下列代码所示

-module(testIf). 
-export([bigger5/1]). 

bigger5(A) -> 
   if 
      A == 5 -> 
         io:fwrite("A = 5"); 
      A < 5 -> 
         io:fwrite("A < 5"); 
      true -> 
         io:fwrite("A > 5") 
   end.

可以看到,所有语句块被包裹在if...end.中,若a==5,则输出"A = 5";如果a<5,则输出"A < 5"。最后的true,可理解为无匹配选项,类似于C语言switch...case中的default,此时输出"A > 5"

调用结果如下

1> c("testIf.erl").
{ok,testIf}
2> testIf:bigger5(3).
A < 5ok
3> testIf:bigger5(5).
A = 5ok
4> testIf:bigger5(7).
A > 5ok

循环

erlang语言中没有循环结构,所以不用学了。

但是等下,好像有什么不对,没有循环也配叫编程语言?

但仔细想想,for循环要有一个i,让这个i不断增加,直到等于某一个值为止,但erlang中不允许i的值发生变化。while循环虽然没有明说,但其判定条件也隐含了某个变量发生变化,最后导致条件由真变成了假。

换言之,erlang没有循环结构是完全合理的。

但是,不要高兴得太早,erlang可以通过递归来实现循环的功能,这个问题相对比较复杂,故放到后面再讲。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微小冷

请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值