erlang表意编程

表意编程

lookup(Key, Dict) -> {ok, Value} | not_found

(1) 检索数据

{ok, Value} = lookup(Key, Dict)

用来从字典里提取带有已知键的项,如果不存在就会报错
(2) 搜索数据

case lookup(Key, Dict) of
    {ok, Val} ->
     	Val
    not_found ->
    	 "not_found"
end.

可以看出不知道字典里是否有这个键,因为代码模式匹配了lookup的所有返回值{ok, Val}和not_found。可以推断是想在字典里搜索某个值。
(3) 判断数据存在

case lookup(Key, Dict) of
    {ok, _} ->
     	true
    not_found ->
    	false
end.

测试字典里是否存在特定的键, 拿到值却不使用。
lookup 有三种不同的用途:数据检索、搜索和测试某个键是否存在。

与其猜测意图和分析代码,不如调用一个能显式表达三种意图之一的库方法。dict为此导出了三个函数。

dict:fetch(Key, Dict) = Val | EXIT
dict:find(Key, Dict) -> {'ok', Value} | 'error'
dict:is_key(Key, Dict) = Boolean

能准确表达意图。无需猜测和分析程序,函数名就能清楚表达意图。
用lookup编写的代码会比用fetch、search和is_key三者之一编写的代码更难以理解和维护。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值