Какой рейтинг вас больше интересует?
|
Определение места badmatch при вызове одинаковых функций2011-11-12 08:24:49 (читать в оригинале)Итак, допустим, что у вас есть вот такой код: sometimes_not_ok(42) -> not_ok; sometimes_not_ok(_) -> ok. test() -> ok = sometimes_not_ok(13), ok = sometimes_not_ok(42). Функция sometimes_not_ok/1 возможно говорит с бд, или ещё чего-нибудь такого и может выбрасывать исключения/возвращать значения, которые никак не характеризуют аргументы, переданные ей. У нас есть 2 пути, как сделать так, чтобы мы знали, в каком месте случился фейл. Первый из них заключается в том, чтобы обернуть всё в case'ы: case sometimes_not_ok(13) of ok -> case sometimes_not_ok(42) of ok -> continue_here; not_ok -> not_ok_processing end; not_ok -> not_ok_processing end. Однако согласитесь, код при этом станет выглядеть ужасно. А если вам нужно будет поменять две строчки местами? А если у вас сотня таких вызовов? Да и это какое-то дефендное программирование выходит, у эрланга несколько другая концепция. Второй же наш вариант,... [content]
|
Категория «Артисты»
Взлеты Топ 5
Падения Топ 5
Популярные за сутки
|
Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.
взяты из открытых общедоступных источников и являются собственностью их авторов.