从查询函数返回记录是否常见?如果没有,有什么缺点?
我们说我有一个查询服务,它可以返回一些汽车以及它们当前是否已租用。
car 的记录如下所示:
-type rent_state:: rented | available.
-record(car, {make::string(), year::integer(), color::string(), state::rent_state()}).
如果我对汽车进行查询,返回此记录是否合理?
-type car::#car{}.
-spec cars() -> [car()].
或者我应该创建一个标记的元组类型吗?
-type car()::{ {make, string()}, {year,integer()}, {color,string()}, {state,rent_state()}}).
我想制作一个适合其他人使用的API。任何建议表示赞赏。
答案 0 :(得分:3)
我喜欢在本地使用记录到模块,但我发现在应用程序之间共享它们会遇到一些瑕疵:
drozzy_vehicles_car
或其他更长的内容然后使用它会很难看你描述的标记元组看起来像是一个很大的痛苦 - 没有简单的方法从中间抓取一些东西。
如果你不懒,我会使用地图,如果不是,我会使用访问者。
图:
Car = #{ make => "foo", year => 2016, color => "red", state => rented}.
访问者:
1> Car = rentals:get_car().
{car,"foo",2016,"red",rented} %% it's actually a record, but we don't expose that!
2> rentals_car:year(Car).
2016
3> rentals_car:state(Car).
rented
4> % etc