Erlang编程风格的对比

本文探讨了Erlang编程风格的特点,通过三个不同的编程示例对比,强调了Erlang风格在清晰简洁方面的优势,尤其适合表达Erlang语言特性。尽管Erlang风格可能不如if语句符合传统C系语言的阅读习惯,但作者更倾向于使用示例3的写法。
摘要由CSDN通过智能技术生成
以一道编程题为例:
要求:编写一个列表反转程序,但不使用lists:reverse.
[1,2,3,...,5] ->[5,...,3,2,1] 


示例1:
通过模式匹配,一个函数名实现。
注意:这里其实是两个函数(参数个数不同的两个同名函数)。
优点:代码简洁
缺点:可读性不高。明明是两个函数,却取了同一个名字,感觉怪怪的。
-module(test).
-export([my_reverse/1]).

my_reverse(L) -> my_reverse(L, []).
my_reverse([H|T], Result) -> my_reverse(T, [H|Result]);
my_reverse([], Result) -> Result.	


示例2:
分层设计,将入口调用函数(my_reverse/1)和处理过程函数(middle_reverse/2)分开.
处理过程使用一个函数调用过程,内部通过if来进行判断进入不同的分支。
优点:代码分层,可读性强。
缺点:处理过程函数使用if,没有充分利用好erlang模式匹配的天性,而且那个true让人感觉怪怪的。
-module(test).
-export([my_reverse/1]).

my_reverse([]) -> [];
my_reverse(L) -> middle_reverse(L, []).

middle_reverse([H|T], Res
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值