在某些情况下,如果将两个参数传递给函数(例如两个列表),而不是传递包含两个列表的元组,则会发现更加清楚。哪个被认为是更好的风格?效率有何不同?
谢谢。
这主要取决于口味和精心设计的API。如果您遵循“不要让我思考”的哲学,那么您可能最终会同时使用两种方法。
在参数中使用元组有时会造成混淆,因为它是不平凡的,必须加以记录。例如,lists:zip({List1, List2})
这将造成混乱,因为单独发送列表更加直观。
如果两个列表属于同一列表,并且在使用前将通过多个函数传递,则将它们组合在一起成为一个元组会很方便,这样一来,函数就不必分别传递它们。这使元组几乎成为可以传递的轻量级“对象”。理解“对象”的函数可以对其进行查看,也可以对其进行分解,然后调用分别对元素进行操作的更深层的函数。
有时,这两个列表之间的关系是如此紧密,以至于始终将它们保持在一个元组中才有意义:
aquire(Caller, {[Item|Free], Busy}) -> {Free, [{Caller, Item}|Busy]};
aquire(_Caller, {[], _Busy}) -> {error, no_free_items}.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句