gb_trees:update/3
更新树里键的值
用法:
update(Key, Val, Tree1) -> Tree2
内部实现:
-spec update(Key, Val, Tree1) -> Tree2 when
Key :: term(),
Val :: term(),
Tree1 :: gb_tree(),
Tree2 :: gb_tree().
update(Key, Val, {S, T}) ->
T1 = update_1(Key, Val, T),
{S, T1}.
%% See 'lookup' for notes on the term comparison order.
update_1(Key, Value, {Key1, V, Smaller, Bigger}) when Key < Key1 ->
{Key1, V, update_1(Key, Value, Smaller), Bigger};
update_1(Key, Value, {Key1, V, Smaller, Bigger}) when Key > Key1 ->
{Key1, V, Smaller, update_1(Key, Value, Bigger)};
update_1(Key, Value, {_, _, Smaller, Bigger}) ->
{Key, Value, Smaller, Bigger}.
把树 Tree1 里键 Key 的值更为 Val,最后返回一个新树 Tree2(这里假设该键在树里存在)。
Orddict = orddict:from_list([{pear, 7}, {orange, 5}, {apple, 2}]),
Tree = gb_trees:from_orddict(Orddict),
gb_trees:update(apple, 10, Tree).