Глобальные переменные

49 views
Skip to first unread message

WWW

unread,
May 31, 2018, 11:57:00 AM5/31/18
to Erlang по-русски
Приветствую всех! Подскажите пожалуйста как объявить, а главное использовать глобальные переменные. Пробовал макросы, но не работает, по макросам тоже подскажите как правильно их использовать и стоит ли их использовать как глобальные переменные. под глобальными переменными я имею в виду чтоб они были доступны 1) в рамках модуля моего 2) в рамках всех моих модулей.

Grigory Fateyev

unread,
May 31, 2018, 12:22:39 PM5/31/18
to Erlang в России
(main...@127.0.0.1)1> application:set_env(module, key, value).
ok
(main...@127.0.0.1)2> application:get_a
get_all_env/0      get_all_env/1      get_all_key/0      get_all_key/1      
get_application/0  get_application/1  
(main...@127.0.0.1)2> application:get_all_env(module).
[{key,value}]
(main...@127.0.0.1)3> application:get_env(module, key).
{ok,value}

31 мая 2018 г., 18:57 пользователь WWW <wad...@yandex.ru> написал:
Приветствую всех! Подскажите пожалуйста как объявить, а главное использовать глобальные переменные. Пробовал макросы, но не работает, по макросам тоже подскажите как правильно их использовать и стоит ли их использовать как глобальные переменные. под глобальными переменными я имею в виду чтоб они были доступны 1) в рамках модуля моего 2) в рамках всех моих модулей.

--
Вы получили это сообщение, поскольку подписаны на группу "Erlang по-русски".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russian+unsubscribe@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-russian@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

WWW

unread,
Jun 1, 2018, 9:22:12 AM6/1/18
to Erlang по-русски
А можно пример кода: глобальная переменная в рамках одного модуля?
И пример кода: глобальная переменная в рамках разных модулей?

Grigory Fateyev

unread,
Jun 1, 2018, 9:42:09 AM6/1/18
to Erlang в России
Я вам привёл пример кода, только он выполнен в repl. В моём примере, module это атом, пишите здесь любой атом, например имя приложения, к которому параметр привязан. А потом в любом модуле пишите: {ok, Value} = application:get_env(module, key). и получайте ваше значение. Всё просто.

1 июня 2018 г., 16:22 пользователь WWW <wad...@yandex.ru> написал:
А можно пример кода: глобальная переменная в рамках одного модуля?
И пример кода: глобальная переменная в рамках разных модулей?

--

Максим Павленко

unread,
Jun 1, 2018, 11:11:38 AM6/1/18
to erlang-...@googlegroups.com
Рискну предположить, что на самом деле автору не надо глобальных переменных, а надо погуглить бест практикс в эрланге и понять где ошибка в дизайне.

пт, 1 июня 2018, 20:42 Grigory Fateyev <gfb...@gmail.com>:
Я вам привёл пример кода, только он выполнен в repl. В моём примере, module это атом, пишите здесь любой атом, например имя приложения, к которому параметр привязан. А потом в любом модуле пишите: {ok, Value} = application:get_env(module, key). и получайте ваше значение. Всё просто.
1 июня 2018 г., 16:22 пользователь WWW <wad...@yandex.ru> написал:
А можно пример кода: глобальная переменная в рамках одного модуля?
И пример кода: глобальная переменная в рамках разных модулей?

--
Вы получили это сообщение, поскольку подписаны на группу "Erlang по-русски".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russia...@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-...@googlegroups.com.

Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

--
Вы получили это сообщение, поскольку подписаны на группу "Erlang по-русски".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russia...@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-...@googlegroups.com.

Aleksey Kluchnikov

unread,
Jun 1, 2018, 1:48:57 PM6/1/18
to erlang-russian
В ерланге же нет глобальных переменных. Если нужны делайте их через базу. Например через ets. Или через env, но лично мне env не нравятся, они и тормозные и задаются не явно, фиг знает где, где то в стартовых скриптах. Или генсервер делайте, и им выдавайте. Лично я харкожу все, но это не бест практикс

1 июня 2018 г., 19:11 пользователь Максим Павленко <pavle...@gmail.com> написал:
Рискну предположить, что на самом деле автору не надо глобальных переменных, а надо погуглить бест практикс в эрланге и понять где ошибка в дизайне.

пт, 1 июня 2018, 20:42 Grigory Fateyev <gfb...@gmail.com>:
Я вам привёл пример кода, только он выполнен в repl. В моём примере, module это атом, пишите здесь любой атом, например имя приложения, к которому параметр привязан. А потом в любом модуле пишите: {ok, Value} = application:get_env(module, key). и получайте ваше значение. Всё просто.
1 июня 2018 г., 16:22 пользователь WWW <wad...@yandex.ru> написал:
А можно пример кода: глобальная переменная в рамках одного модуля?
И пример кода: глобальная переменная в рамках разных модулей?

--
Вы получили это сообщение, поскольку подписаны на группу "Erlang по-русски".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russian+unsubscribe@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-russian@googlegroups.com.

Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

--
Вы получили это сообщение, поскольку подписаны на группу "Erlang по-русски".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russian+unsubscribe@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-russian@googlegroups.com.

Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

--
Вы получили это сообщение, поскольку подписаны на группу "Erlang по-русски".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russian+unsubscribe@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-russian@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages