erlang中[string()]和list()的区别是什么?

时间:2016-04-20 09:50:03

标签: erlang

Erlang:[string()]和list()??

之间有什么区别

我看到它们是ct_telnet的返回类型:cmd和ct_ssh:exec?

http://erlang.org/doc/man/ct_ssh.html

from functools import lru_cache

@lru_cache()
def fib(n):
    if n==0:

...

http://erlang.org/doc/man/ct_telnet.html

fib()

2 个答案:

答案 0 :(得分:9)

类型list()代表任何列表,而不指定其元素的类型。另一种撰写方式是[_][term()]

string()list()的特例:它是一个包含表示Unicode代码点的整数的列表(如果小于256,则为Latin-1字符,如果小于128,则为ASCII字符; )。另一种撰写string()的方式是list(char())[char()]

[string()]是一个字符串列表。此类型也可以写为list(string())。由于它是列表的特例,因此将其写为list()也是有效的(尽管信息量较少)。

答案 1 :(得分:0)

在 Erlang 中,形式上没有“字符串”这样的类型,但是字符串是使用代码列表表示的。所以本质上

String() -> [Positive_Integer()](正整数列表)

[String()] -> [[Positive_Integer()]](正整数列表)

其中 [] 表示一个列表。