Повторное использование моих переменных в Erlang Code, а не в Erlang Shell - PullRequest
0 голосов
/ 12 ноября 2011

В оболочке Erlang я могу очень хорошо использовать мои переменные. как это:

1> R = "muzaaya".
"muzaaya"
2> f(R).
ok
3> R = "muzaaya2".
"muzaaya2"
Итак, я не могу вызвать f(Variable) в моем исходном коде, потому что я не знаю, к какому модулю принадлежит эта функция. Я пробовал модули как: erlang, shell, c, e.t.c. Кто-нибудь пробовал повторно использовать переменные в исходном коде Erlang, кроме как в командной консоли? Как ты сделал это ? Спасибо

Ответы [ 4 ]

4 голосов
/ 12 ноября 2011

Нет, вы не можете сделать это внутри модуля.

3 голосов
/ 13 ноября 2011

Оболочка REPL интерпретируется, файл кода компилируется.Оболочка пригодится для тестирования, но вы не написали бы свой веб-сервер в оболочке.; -)

Для хакеров Эрланга было бы возможно и даже не трудно реализовать языковую конструкцию f(V), но она не подходила бы для модели проектирования Эрланга.Имейте в виду, что никакая функция не могла бы забыть переменную, поэтому это должно было быть сделано в новой конструкции на родном языке.При компиляции виртуальная машина больше не знает переменных, поскольку Erlang работает на довольно обычной стековой машине, мало чем отличающейся от JVM.

Это просто не было бы функциональным программированием, если бы можно былоперепривязать переменную V.

2 голосов
/ 13 ноября 2011

Как уже указывалось другими, f () является командой оболочки и существует только в оболочке. Эта функция f () и все другие команды оболочки выглядят как обычный вызов функции, потому что единственный способ что-то сделать в Erlang - это вызвать функцию. И оболочка не вводит никакого нового синтаксиса. Все команды оболочки ведут себя как обычные функции в том смысле, что они всегда возвращают значение.

Не считалось необходимым использовать f () в обычных функциях, хотя многие не согласны и считают, что единственное связывание переменных неоправданно ограничительно.

2 голосов
/ 12 ноября 2011

Функции, которые отображаются при вводе справки (). в оболочке есть только функции оболочки и не могут быть использованы при программировании Erlang. f () является одной из функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...