首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Erlang自学札记(一)

2012-12-22 
Erlang自学笔记(一)本来想着能够外包到汇丰里面工作的,谁知道,进入了汇丰的黑名单。因此每天在办公室坐等领

Erlang自学笔记(一)
   本来想着能够外包到汇丰里面工作的,谁知道,进入了汇丰的黑名单。因此每天在办公室坐等领工资。闲来没事,下载了一个Erlang学习,直到有人叫我去做项目。今天看了一整天的geting-start,也就写些内容在这里,做一下笔记。
    我是用写字本慢慢按描述打的。然后使用Erlang的shell中使用c(moduleName)来进行编译的。

程序注释使用 %
变量大头字母必须要大写否则会出错。
语句结束是使用. 不是使用;
在Erlang中 {Element,Element}这种情况是算一个元素。
能够对于大括号的元素进行匹配的赋值.例如
{Head|Rest} = {1,2,3,4,5,6}
Head.
1
Rest.
{2,3,4,5,6}
R = {5}.
M = {Head|R}.
M.
{1,5}

下面是一个例子,显示数据,加上求最大值的。
-module(tut7). #这里是命名模块名称,文件名必须与这个名称相同
-export([format_temps/1]). #这个是对外声明可以使用的方法,方法名为#format_temps 参数个数为1

format_temps(List_of_cities) -> #这个是方法的定义,在使用->之前,可以使用#when对参数进行判断.
Converted_List = convert_list_to_c(List_of_cities),
print_temp(Converted_List),
{Max_city,Min_city} = find_max_and_min(Converted_List),
print_max_and_min(Max_city,Min_city).

convert_list_to_c([{Name,{f,F}}|Rest]) ->
Converted_City = {Name,{c,(F-32)*5/9}},
[Converted_City | convert_list_to_c(Rest)];

convert_list_to_c([City|Rest]) ->
[City|convert_list_to_c(Rest)];

convert_list_to_c([]) -> [].

print_temp([{Name,{c,Temp}}|Rest]) ->
io:format("~-15w ~w c~n",[Name,Temp]),#使用了提供的module,io进#行了格式化的输出,其中 ~w对应后面的List中的元素,~n为换行
print_temp(Rest);

print_temp([]) ->
ok.

find_max_and_min([City|Rest]) ->
find_max_and_min(Rest,City,City).

find_max_and_min([{Name,{c,Temp}}|Rest],
    {Max_Name,{c,Max_Temp}},
    {Min_Name,{c,Min_Temp}})->
   if
Temp>Max_Temp->
    Max_City = {Name,{c,Temp}};
true ->
Max_City = {Max_Name,{c,Max_Temp}}
   end,
   if
Temp <Min_Temp ->
Min_City = {Name,{c,Temp}};
true ->
Min_City = {Min_Name,{c,Min_Temp}}
   end,
   find_max_and_min(Rest,Max_City,Min_City);

find_max_and_min([],Max_City,Min_City) ->
{Max_City,Min_City}.

print_max_and_min({Max_name,{c,Max_temp}},{Min_name,{c,Min_temp}}) ->
io:format("Max temperature was ~w c in ~w~n",[Max_temp,Max_name]),
io:format("Min temperature was ~w c in ~w~n",[Min_temp,Min_name]).

对于Erlang的阅读,我觉得会比较伤眼睛,而且逻辑思维敢比较强,感觉上方法总是递归调用。而且例子中的函数,总是会对空集给予考虑。

明天继续。

热点排行