Переменная длина аргумента функции перечисляет в Erlang

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

в зависимости от количества повторений, различие в производительности, вероятно, будет незначительно.

Однако я соглашаюсь с другими, что наличие его вне цикла заставляет тело цикла выглядеть более чистым.

, Если существует шанс, что Вы будете когда-либо хотеть продвинуться с обработкой, а не выходом, если бы там неверный номер, то Вы хотели бы, чтобы код был в цикле.

8
задан Dawid 7 December 2009 в 00:29
поделиться

2 ответа

Один из способов сделать это - передать все аргументы в списке:

function (ListOfParameters)

, а затем вы можете перебирать указанные ListOfParameters . Таким образом, вы можете сделать так, чтобы ваше объявление функции могло принимать любое количество «параметров», просто добавьте в объявление больше терминов ... но я не уверен, что вы на это надеялись. Вы думаете о списке параметров C vararg ? В положительном случае прочтите следующий абзац.

Вы должны помнить, что Erlang основан на сопоставлении с образцом. Аргументы в "объявлении" функции служат в качестве шаблона соответствия при вызове функции. Вам придется оставить в стороне свое мышление «процедурного программирования» , чтобы полностью использовать возможности Erlang.

8
ответ дан 5 December 2019 в 10:42
поделиться

Чтобы быть более явным, чем @jldupont: Нет!

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

8
ответ дан 5 December 2019 в 10:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: