установка специального стекового фрейма для попытки/выгоды добавляет дополнительные издержки, но JVM может быть в состоянии обнаружить то, что Вы возвращаете и оптимизируете это далеко.
в зависимости от количества повторений, различие в производительности, вероятно, будет незначительно.
Однако я соглашаюсь с другими, что наличие его вне цикла заставляет тело цикла выглядеть более чистым.
, Если существует шанс, что Вы будете когда-либо хотеть продвинуться с обработкой, а не выходом, если бы там неверный номер, то Вы хотели бы, чтобы код был в цикле.
Один из способов сделать это - передать все аргументы в списке:
function (ListOfParameters)
, а затем вы можете перебирать указанные ListOfParameters
. Таким образом, вы можете сделать так, чтобы ваше объявление функции могло принимать любое количество «параметров», просто добавьте в объявление больше терминов ... но я не уверен, что вы на это надеялись. Вы думаете о списке параметров C vararg
? В положительном случае прочтите следующий абзац.
Вы должны помнить, что Erlang основан на сопоставлении с образцом. Аргументы в "объявлении" функции служат в качестве шаблона соответствия при вызове функции. Вам придется оставить в стороне свое мышление «процедурного программирования» , чтобы полностью использовать возможности Erlang.
Чтобы быть более явным, чем @jldupont: Нет!
Дело не в том, что он просто не был реализован, а в функциях Erlang с тем же именем, но с разным количеством аргументов. быть разными функциями, поэтому его нельзя добавить.