я первым заметил функцию с задней восклицательный-балльной/челки (!), Проходя через учебник Phoenix (в разделе Incoming Events)Что такое функции взрыва эликсира?
def handle_in("new_msg", %{"body" => body}, socket) do
broadcast! socket, "new_msg", %{body: body}
{:noreply, socket}
end
Что задн восклицательный знак означает? Он что-то делает? Я искал вокруг и пытался посмотреть, но я не уверен, что использую правильные условия. Пока кажется, что функция только как соглашение вызовет ошибку, если она терпит неудачу, но всегда это всегда означает это.
только упоминает я вижу его появляются в «Программирование эликсира» Дэйв Томас:
Identifiers in Elixir are combinations of upper and lower case ASCII
characters, digits, and underscores. Function names may end with a
question mark or an exclamation point.
А также в the documentation он не упоминает:
Notice that when the file does not exist, the version with ! raises an
error. The version without ! is preferred when you want to handle
different outcomes using pattern matching...
Ни один из них объясняет, если это согласитесь, что другие эликсиристы или алхимики или что-то другое. Пожалуйста помоги.
Спасибо, что нашли время, чтобы предоставить хороший пример из источника Феникса. Он отлично отвечает на мой вопрос. Я застрял между вашим ответом и тем, что я выбрал, потому что оба хорошо объяснили мой вопрос. Я решил не выбирать этот только потому, что он сосредоточился на использовании Феникса '!' И, к сожалению, не выраженный в моем вопросе, меня интересуют соглашения Эликсира несколько больше, чем Феникс. – Marc
Я собираюсь есть свои собственные слова - и принимаю ваш ответ, потому что он указывает на важную деталь, о которой упоминается @MoxleyStratton - «Соглашение о запрете применяется к ситуациям, в которых есть две версии функции - одна, которая вызывает исключение (версия бэнга), а другая - нет. " – Marc