Erlang学习笔记

  • 整形
10
-234
16#AB10F
2#110111010
$A
  • 浮点型
17.368
-56.654 
12.34E-10.
16#DF
$A
B#Val B用来表示数制,即B进制的Val
$Char 用来表示ascii码
  • 原子
abcef
start_with_a_lower_case_letter
'Blanks can be quoted'
'Anything inside quotes \n\012'
  • 元组
{123, bcd}
{123, def, abc}
{person, 'Joe', 'Armstrong'}
{abc, {def, 123}, jkl}
{}
  • 列表
[123, xyz]
[123, def, abc]
[{person, 'Joe', 'Armstrong'},
	{person, 'Robert', 'Virding'},
	{person, 'Mike', 'Williams'}
]
"abcdefghi"
becomes - [97,98,99,100,101,102,103,104,105]
""
becomes - []
  • 变量(首字母大写)
Abc
A_long_variable_name
AnObjectOrientatedVariableName
  • 复合形式
[{{person,'Joe', 'Armstrong'},
	{telephoneNumber, [3,5,9,7]},
	{shoeSize, 42},
	{pets, [{cat, tubby},{cat, tiger}]},
	{children,[{thomas, 5},{claire,1}]}},
 {{person,'Mike','Williams'},
	{shoeSize,41},
	{likes,[boats, beer]},
	...
]
  • 模式匹配("_"为占位参数)
A = 10
	Succeeds - binds A to 10


{B, C, D} = {10, foo, bar}
	Succeeds - binds B to 10, C to foo and D 
	to bar


{A, A, B} = {abc, abc, foo}
	Succeeds - binds A to abc, B to foo

{A, A, B} = {abc, def, 123}
	Fails

[A,B,C] = [1,2,3] 
	Succeeds - binds A to 1, B to 2, C to 3

[A,B,C,D] = [1,2,3]
	Fails

[A,B|C] = [1,2,3,4,5,6,7]
	Succeeds - binds A = 1, B = 2,
	C = [3,4,5,6,7]

[H|T] = [1,2,3,4]
	Succeeds - binds H = 1, T = [2,3,4]

[H|T] = [abc]
	Succeeds - binds H = abc, T = []

[H|T] = []
	Fails

{A,_, [B|_],{B}} = {abc,23,[22,x],{22}}
	Succeeds - binds A = abc, B = 22
  • 函数调用
module:func(Arg1, Arg2, ... Argn)
func(Arg1, Arg2, .. Argn)
  • 模块
-module(demo).
-export([double/1]).

double(X) ->
	times(X, 2).

times(X, N) ->
	X * N.
  • 运行环境(c(File)为加载File模块)
unix> erl
Eshell V2.0
1> c(demo).
double/1 times/2 module_info/0
compilation_succeeded
2> demo:double(25).
50
3> demo:times(4,3).
** undefined function:demo:times[4,3] **
** exited: {undef,{demo,times,[4,3]}} **
4> 10 + 25.
35
5> 
  • 内建函数
date()
time()
length([1,2,3,4,5])
size({a,b,c})
atom_to_list(an_atom)
list_to_tuple([1,2,3,4])
integer_to_list(2234)
tuple_to_list({})
  • 函数
func(Pattern1, Pattern2, ...) ->
		... ;
func(Pattern1, Pattern2, ...) ->
	... ;
	...
func(Pattern1, Pattern2, ...) ->
	... .
  • Functions (cont)
-module(mathStuff).
-export([factorial/1, area/1]).

factorial(0) -> 1;
factorial(N) -> N * factorial(N-1).

area({square, Side}) ->
	Side * Side;
area({circle, Radius}) ->
	% almost :-)
	3 * Radius * Radius;
area({triangle, A, B, C}) ->
	S = (A + B + C)/2,
	math:sqrt(S*(S-A)*(S-B)*(S-C));
area(Other) ->
	{invalid_object, Other}.
  • 类型检测
number(X)	   - X is a number
integer(X)	   - X is an integer
float(X)	   - X is a float
atom(X)		   - X is an atom
tuple(X)	   - X is a tuple
list(X)		   - X is a list

length(X) == 3 - X is a list of length 3
size(X) == 2   - X is a tuple of size 2.

X > Y + Z      - X is > Y + Z
X == Y         - X is equal to Y
X =:= Y        - X is exactly equal to Y (i.e. 1 == 1.0 succeeds but 1 =:= 1.0 fails)
  • 列表操作
average(X) -> sum(X) / len(X).

sum([H|T]) -> H + sum(T);
sum([]) -> 0.

len([_|T]) -> 1 + len(T);
len([]) -> 0.

double([H|T]) -> [2*H|double(T)];
double([]) -> [].

member(H, [H|_]) -> true;
member(H, [_|T]) -> member(H, T);
member(_, []) -> false.
  • 环境命令
h()    - 历史命令

b()    - 变量.

f()    - 清空变量

f(Var) - 清除变量

e(n)   - 命令重复

e(-1)  -重复最近一条命令
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值