Erlang - глобальные переменные ... да, я знаю, я знаю

Хорошо, я пытался всеми способами понять это.

Мне нужно, чтобы эта таблица была глобальной ... Я понял, что гораздо менее эффективно передавать TableID вокруг .. в область действия моей программы.

Итак, я попытался создать новую таблицу, затем поискал ее:

TableID = ets:new(tb, [set,public]),
put({tableUniqueID}, TableID),

Затем я использовал:

get({tableUniqueID})

И в той же функции он возвращает TableID очень хорошо ... все же, когда я использую его в другая функция возвращает неопределенное значение.

Что ?? Я думал, что get и put сделали глобальный ключ ..

ТАКЖЕ до всего этого я понял, что вы "можете" вызвать функцию поиска в таблице как таковую:

ets:lookup(get({tableUniqueID}), msgIn)

То же самое, в функции работает, снаружи нет ... Проблема Get Put ..

Тогда я понял, что другой способ поиска таблицы - вызвать атом таблицы.

ets:lookup(tb, msgIn)

Но это НИКОГДА не работает, не внутри функции, не из ..

Поэтому мой главный приоритет - выяснить, почему поиск таблицы по ее атому невозможен. Но оно говорит, что оно есть везде, включая руководство.

Получить / положить, без которого я мог бы жить. Пока я могу хранить таблицу, тогда ищите таблицу по ее идентификатору атома.

Может кто-нибудь пролить свет на это Дилемма?

6
задан Brian Tompsett - 汤莱恩 9 June 2017 в 22:02
поделиться