Недавно я решил изучить Эликсир. Исходя из опыта работы с C ++ / Java / JavaScript, у меня были большие проблемы с пониманием основ. Это может показаться глупым, но как операторы return работают в Elixir? Я огляделся, и мне кажется, что это последняя строчка функции, т.е.
def Hello do «Hello World!» end
Будет ли эта функция возвращать «Hello World!», Есть ли другой способ сделать возврат? Кроме того, как бы вы вернулись пораньше? в JavaScript мы могли бы написать что-то вроде этого, чтобы узнать, есть ли в массиве определенное значение:
function foo(a){ for(var i = 0;i<a.length;i++){ if(a[i] == «22»){ return true; } } return false; }
Как это будет работать в Эликсире?
Вот еще один пример того, как вернуться раньше: elixir-examples.github.io/examples/ возврат рано — person Joe Thomas schedule 26.05.2016
@Brandon, спасибо, чувак, так что в этом примере, если some_condition ложно, он выведет значение, которое выводит do_something ()? — person Joe Thomas schedule 26.05.2016
Это совсем не глупый вопрос. При использовании императивных языков очень сложно привыкнуть к представлению о каждой функции, возвращающей последнее вычисленное значение. Придерживайтесь этого — как только вы привыкнете к идее, что каждая функция возвращает значение, вы обнаружите, что ваши функции станут намного более связными. — person Joe Thomas schedule 26.05.2016
@wateriswet, это правильно, он вернет значение do_something () — person Joe Thomas schedule 27.05.2016
Возможный дубликат оператора возврата в Elixir — person Joe Thomas schedule 05.02.2017
Для тех, кто действительно этого хочет, есть пакет возврата. — person Joe Thomas schedule 05.02.2017
Источник: