マップの名前空間は(少なくとも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