最近在看《七周七语言》,适当了解一些C语言家族以外的编程语言也很有意思,下面记录一下各个语言的语法特点。
一,erl打开Erlang交互命令行
% 用百分号注释,语句用句号标志结束 % 变量必须是大写字母开头,只可赋值一次 > Name = "ciaos". "ciaos" > Name. "ciaos" % 符号首字母小写 > Color = red. red % 模式匹配经常使用 > Person = {person, {name, "ciaos"}, {age, 25}}. {person,{name,"ciaos"},{age,25}} > {person, {name, Name}, {age, Age}} = Person. {person,{name,"ciaos"},{age,25}} > Name. "ciaos" > Age. 25
二,函数/模块
% 动态类型,不必担心数据元素赋值是什么 % basic.erl -module(basic). -export([test/1]). test(0) -> 1; test(1) -> 1; test(Para) -> test(Para - 1) + test(Para - 2). % 进入erl运行如下 1> c(basic). {ok,basic} 2> basic:test(3). 3 % 函数赋值 > Negate = fun(I) -> -I end. #Fun<erl_eval.6.82930912> > Negate(-1). 1
三,控制结构
% case 模式匹配 > Animal = "dog". "dog" > case Animal of > "dog" -> wangwang; > "cat" -> miaomiao; > _ -> unknown > end. wangwang % if "哨兵" guard > X = 0. 0 > if > X > 0 -> positive; > X < 0 -> negative; > true -> zero > end. zero
四,列表操作(含匿名函数)
> Fibs = [1,1,2,3,5]. [1,1,2,3,5] > Double = fun(X) -> X * 2 end. #Fun<erl_eval.6.82930912> > lists:map(Double, Fibs). [2,2,4,6,10] > [Double(X) || X <- Fibs]. [2,2,4,6,10]
五,其他知识点
1,Erlang三种并发原语:“!”发送消息,spawn产生进程,receive接受消息
2,实现同步消息通讯
3,链接进程提升稳定性,热部署
总结:
1,构建可靠的分布式系统
2,轻量级,无共享资源的进程
3,OTP——企业级的库(容错性,可扩展性,热插拔)