定义typespec时,binary,String.t,char_list,[char]等之间有何区别?
@spec method(binary) :: binary
Run Code Online (Sandbox Code Playgroud)
和
@spec method(String.t) :: String.t
Run Code Online (Sandbox Code Playgroud)
它们相等吗?Doc说:
String.t 与相同binary,请参见此处的定义。
char_list不仅仅是简单的字符列表。unicode在Erlang 中的模块中定义为:
maybe_improper_list(char() | unicode_binary() | charlist(),
unicode_binary() | [])
Run Code Online (Sandbox Code Playgroud)
因此,它既包含正确的列表,也包含不正确的列表,并且该列表可以包含字符,二进制文件或字符列表或空列表。