如何获得elixir中每种类型的最小值和最大值?例如,一个整数,浮点数和一个字符串的最大可能长度。
我知道在C中它在limits.h
中定义为INT_MIN
,INT_MAX
,依此类推。关于灵丹妙药中这些类型的限制的文件?
答案 0 :(得分:17)
计算是在精度数字仅受主机系统可用内存限制的数字上执行的
Erlang文档中的a page讨论了Erlang VM的限制(例如,原子最多可以包含255个字符);你可以看到,如果你看一下那个页面,甚至没有提到整数限制。
Erlang / Elixir中的整数仅受系统可用内存的限制,因此对它们的大小几乎无限制。
对于二进制文件(字符串),我将引用上面链接的页面说:
在Erlang的32位实现中,536870911字节是可以使用位语法构造或匹配的最大二进制文件。 (在64位实现中,最大大小为2305843009213693951字节。)如果超出限制,则位语法构造将失败并出现system_limit异常,而任何与过大的二进制文件匹配的尝试都将失败。从R11B-4版本开始强制实施此限制;在早期版本中,对太大二进制文件的操作通常会失败或给出不正确的结果。在将来的Erlang / OTP版本中,创建二进制文件的其他操作(例如list_to_binary / 1)可能也会强制执行相同的限制。