总是困扰我编写Elixir函数的一件事是我应该过滤还是normalize
我的函数。这背后的原因是因为Elixir倾向于以不同的方式处理"input"
和'input'
,其中一个是位串,另一个是char列表。
过滤和规范化所有输入是否更好?或者只是让它错误地说你发送了一个char列表而不是预期的bitstring?
答案 0 :(得分:3)
大多数Elixir库只处理位串(双引号)并要求您在使用库之前手动转换列表(单引号)。
但是,这完全取决于您的使用案例。例如,如果我编写一个库作为另一个erlang库的输出作为输入,那么每次使用库时都必须转换charlist是不方便的。恕我直言,这只是糟糕的API设计。尽管如此,我认为只要你没有明确需要它们,你就不应该处理这些名单。 Bitstrings是Elixir处理字符串的标准方法,无需为每个方法添加所有转换杂乱。
最后,确实存在一个问题,即错误消息可能非常神秘,而且某些内容来自库内的深层次。这是动态类型语言的一般缺点。我仍然不会明确处理这个案例,因为它不是API的一部分。