Там какой-либо путь состоит в том, чтобы определить функцию Erlang из оболочки Erlang вместо из файла Эрл?
Да, но это больно. Ниже приведен «декларация о лямбдах» (aka Fun
в Условиях Эрланга).
1
>
f = fun (x) -> x + 2 конца.
#fun
Посмотрите на это пост . Вы даже можете войти в объявление доклада модуля , если вы когда-либо нуждаетесь. Другими словами, да, вы можете объявить функции.
Выбор прост. Дельфи, руки вниз. C++ обладает мощными вычислительными возможностями, но не имеет хорошего графического интерфейса. У VB хороший дизайнер форм, но удачи в получении высокой производительности из него, в VB6 или .NET версии!
Delphi компилирует до очень эффективного собственного кода и даже включает встроенный ассемблер, если вам нужно подправить расчеты на этом уровне. И у него очень простой в использовании дизайнер форм. Пока вам нужно только составить Win32 поддержки, Дельфи - очевидный выбор. (И это ограничение выглядит так, будто оно скоро изменится, по сравнению с тем, что команда Delphi говорит в последнее время...)
-121--4089963-Если вы просто хотите преобразовать значения в красивые последовательности:
twodecimals = ["%.2f" % v for v in vars]
Кроме того, вы можете распечатать единицы измерения, как в вашем вопросе:
vars = [0, 1, 2, 3] # just some example values
units = ['kg', 'lb', 'gal', 'l']
delimiter = ', ' # or however you want the values separated
print delimiter.join(["%.2f %s" % (v,u) for v,u in zip(vars, units)])
Out[189]: '0.00 kg, 1.00 lb, 2.00 gal, 3.00 l'
Второй способ позволяет легко изменить разделитель (табулятор, места, новые линии, что угодно), чтобы удовлетворить ваши потребности; разделитель может также быть аргументом функции вместо жесткого кодирования.
Edit: Чтобы использовать синтаксис «name = value», просто измените элементарную операцию в понимании списка:
print delimiter.join(["%s = %.2f" % (u,v) for v,u in zip(vars, units)])
Out[190]: 'kg = 0.00, lb = 1.00, gal = 2.00, l = 3.00'
-121--967996- Один из ответов заключается в том, что оболочка вычисляет только выражения, а определения функций не являются выражениями, а являются формами. В файле erl определяются формы, а не выражения.
Все функции существуют в модулях, и кроме определений функций модуль состоит из атрибутов, тем важнее, существа имя модулей и какие функции из него экспортируются. Из других модулей можно вызывать только экспортированные функции. Это означает, что перед определением функций необходимо определить модуль.
Модули являются единицей компиляции в erlang. Они также являются базовой единицей обработки кода, т.е. целыми модулями, которые загружаются в систему, обновляются или удаляются из нее. В этом отношении определение функций по отдельности не вписывается в схему вещей.
Кроме того, с чисто практической точки зрения составление модуля происходит настолько быстро, что в быть, способных определять функции в оболочке, очень мало выигрыша.
Если вы хотите определить функцию в оболочке для использования ее в качестве макроса (поскольку она инкапсулирует некоторые функции, которые вам часто нужны), посмотрите