在typespec中,binary,String.t,char_list和[char]之间的区别

时间:2017-12-15 15:29:01

标签: elixir typespec

在定义typespec时,binary,String.t,char_list,[char]等之间有什么不同?

@spec method(binary) :: binary

@spec method(String.t) :: String.t

他们是等同的吗? Doc说:

  • binary用于Elixir字符串。
  • char_list用于Erlang字符串。 定义为[char]。

1 个答案:

答案 0 :(得分:4)

String.tbinary相同,请参阅其定义here

char_list不仅仅是一个简单的字符列表。它在Erlang的unicode模块中定义为:

maybe_improper_list(char() | unicode_binary() | charlist(),
                    unicode_binary() | [])

因此它包括正确和不正确的列表,列表可以包含字符,二进制文件或字符列表或空列表。