Erlang BIF для удаления кортежей в списке - PullRequest
1 голос
/ 14 октября 2010

Как я могу удалить кортеж с ключом из списка?

Ex:

TupleList = [ {apple, {0,0,0}}, {orange, {0,0,0}}, {bannana, {0,0,0}}]

Затем мне нужно удалить кортеж, чей ключ соответствует оранжевому.

Так что я должен вернуться

[ {apple, {0,0,0}},  {bannana, {0,0,0}}]

Я ищу BIF вместо функции, которую я сейчас использую.

Спасибо и С уважением

Ответы [ 3 ]

3 голосов
/ 14 октября 2010

Для этого нет BIF . Существует списки: keydelete / 3 , которые не являются BIF в отличие от списков: member / 2, списки: reverse / 2, списки: keymember / 3, списки: keysearch / 3 и списки: keyfind / 3, которые являются БИФами. В любом случае перечисляет: keydelete / 3 работает лучше, чем proplists: delete / 2 , потому что proplists немного сложнее. Если вы заинтересованы в производительности, то ваша собственная созданная локальная функция или, возможно, nif будут лучшим решением, а также для понимания списка (который должен выполнять те же функции, что и локальная функция).

1 голос
/ 14 октября 2010
proplists:delete(orange, TupleList).
0 голосов
/ 14 октября 2010

решение выполнено:

[NewHold] = [{N, X} || {N, X} <- Hold, N =/= Who],
...