erLang学习笔记1--安装及基本类型1

erlang学习笔记
1.erlang的安装
ubantu下直接使用 sudo apt-get erlang . 该命令会下载erlang及相关的包。
还有种方式是:
wget http://www.erlang.org/download/otp_src_R14B03.tar.gz
cd otp_src_R14B03
./configure --prefix=/usr/xxx/erlang 
make 
make install 

这种方式可能出现的问题是一些依赖的包需要自己去下载,较麻烦!

测试是否已经安装成功,打开一个终端
输入 erl,若是得到如下信息,代表已经安装成功了。
inter12@inter12-desktop:~/fb$ erl
Erlang R13B03 (erts-5.7.4) [source] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.7.4  (abort with ^G)
 

2.基本的加减乘除
1> 1.0 + 1.
2.0
2> 2.5*6.
15.0
3> 4.5/9.
0.5
4> -9-1.
-10
5> 4 div 3
5> .
1
6> 4 / 3.
1.3333333333333333
7> 
7> 
7> 5 rem 3.
2

特别注意:
1.在shell环境下,代表一个命令行的结束是用英文字符下.号
2.可以随意使用浮点行型及integer类型,除法中使用 / 则会得到一个 浮点型的结果,若是需要integer之间的相除,需要使用  4 div 3 -- > 1
3.求余的符号是 rem . 5 rem 3 -- >2
4.可以进行-(负号)的运行

3.变量的赋值
8> _ = 3+3.
6
9> Two = 2.
2
10> two = 3.
** exception error: no match of right hand side value 3
11> Two = 3.
** exception error: no match of right hand side value 3


1.变量名若是英文字符,首字符必须大写,Two=1 -- ok ,two=1 -- fail
2.也可以使用_(下划线)开头定义变量名
3.变量名被赋值后,不允许被再次定义,也就是说在erlang中,每个变量都是常量!再次进行赋值会报错!
4.在shell环境中,如是对于一个变量赋值错误后,可以通过两个函数来清除

  f(变量名) -- 清除对该变量的赋值
  f().      -- 清除所有变量的赋值
以下就是代码展示:

21> Two = 2.
2
22> Two = 3.
** exception error: no match of right hand side value 3   ------不允许再次赋值
23> f(Two).                                               ------清理变量
ok
24> Two = 3.                                              ------允许再次赋值
3
25> Two = 3.
3
26> Two = 4.
** exception error: no match of right hand side value 4
27> f().
ok
28> Two = 4.
4


4.atoms
1.所有定义为小写的变量 都是原子的,不能被改变,不能被使用.可能是暂时未常量来描述吧!(现在可能理解还存在问题,以后待考)
2.单引号使用的变量等同于不使用单引号的变量  atom = 'atom'  -- > atom
32> cat.                                               
cat                                                    
33> cat = 1.                                           
** exception error: no match of right hand side value 1
34> Atom is cheated.                                            //若是不带单引号的话 则是变量赋值 ,报错            
* 1: syntax error before: is                           
34> 'Atom is cheated'                                   
34> .                                                  
'Atom is cheated'  

                                   
5.boolean 类型及比较运算符号

38> true and false.           
false                         
39> true or false.            
true                          
40> true xor false.           
true                          
41> not false .               
true                          
42> not (true and true).      
false 
  

注意点:
1.and 和 or 都会计算两边的值 ,若是你期望只做一个短路运算的话 ,那么就需要用到 andalso 好 orelse .这个就是类似于 java的 && || 运算符!
50> true andalso kk.                    //这里有一个很有趣得问题,为什么会得到kk。 很奇怪。还留待考究
kk
51> false orelse true. 
true


比较运算符:
56> 5 == 5.0.
true
57> 5 =:= 5.
true
58> 1=/=0.
true
59> 1=:=0.
false
60> 5=:=5.0.
false
61> 5==5.0.
true
62> 1/=3.
true

解析:
1.=:= 等同于其他语言中的 == 。  =/=和/= 等同于其他语言中的 !=  这个地方还有疑问!
2.从上面的解析看, =:=比较的类似于java中的内存地址比较 == 比较的是两个地址的值是否相同!
3.其他的还有就是 >= =<
66> 1 >= 1.
true
67> 1 =< 1.
true
68> 1 > 3.
false
69> 1 < 3.
true


对于不同类型之间==比较 同意返回false 。
77> 5 =:= false.
false
78> 5 ==false.
false


但是< 和 >之间的比较 就不同了。先看下面的结果
79> 1 == false.
false
80> 1 < false.
true


在erlang中没有 true和false的布尔类型变量。 这里的 true 和 false 都是 atom.原子单一的变量(可能描述的不准确)。
在erlang中不同类型之间的比较关系如下所示:
number < atom < reference < fun < port < pid < tuple < list < bit string

也就是说用数字类型同其他类型比较的话,都是出于小的一方如下就很明白的说明了这个问题。同时在erlang中所有类型都是可以用来比较的。
80> 1 < false.
true 






                    

你可能感兴趣的:(erlang)