0
我认为地图的命名空间(至少在R19中)非常奇怪。请看例子:映射的命名空间不一致?
14> M = #{a => 2, b => 3, c => 4}.
#{a => 2,b => 3,c => 4}
15> M.
#{a => 2,b => 3,c => 4}
16> map_size(M).
3
17> maps:map_size(M).
** exception error: undefined function maps:map_size/1
18> to_list(M).
** exception error: undefined shell command to_list/1
19> maps:to_list(M).
[{a,2},{b,3},{c,4}]
所以,map_size
是默认的命名空间可用,但不是在maps:
。但是,to_list/1
表现出相反的行为。我还没有尝试其他功能,但即使这些结果也令人惊讶。
我在这里错过了一些重要的暗流,或者这只是语言设计中粗心大意的一个例子吗?
有'maps:size'因为调用函数没有意义' map_'在'maps'模块中。我相信'map_size'也在默认名称空间中,因为它在守卫中是允许的,但我不是100%确定的。 – Dogbert
@Dogbert很好的解释! 'maps:size'对我来说是新的,现在整个事情变得更有意义了。 – dotslash