introduced a constant
Mar. 10th, 2014 10:56 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
(fixed)
Turned out, have tons of it everywhere. Weird actually.
And no, I'm not saying it's good. I'm just seeing a pattern that worries me a little bit, but I don't know why.
E.g.
type Outcome = Result[Any]
val OK:Outcome = Good("OK")
Turned out, have tons of it everywhere. Weird actually.
And no, I'm not saying it's good. I'm just seeing a pattern that worries me a little bit, but I don't know why.
E.g.
def executeJS(js: String): Result[Unit] = runJS(js) map asScala filter ("OK"==, wrong => s"Wrong response from browser: <<$wrong>>")
no subject
Date: 2014-03-11 01:10 pm (UTC)Была у меня сходная задача - импорт данных из экселевских таблиц. Каждое чтение оформлялось в виде таких требований:
p2type = row.known("Type", alltypes)
content = row.nonempty("Content")
...
Всё это сидело в замыканиях, а над замыканиями хитрый map. В случае невозможности выполнить требование автоматически создавалось человекочитаемое сообщение об ошибке, с координатами листа, (опционально) ряда и (опционально) столбца. И бросалось в виде исключения. Хитрый map исключения ловил, текст ошибки в окно репорта направлял, а также принимал решение в зависимости от координат ошибки - продолжить импорт со следующего ряда, со следующего листа, или вообще остановить процесс импорта.
Так обработка всех видов Bad ушла из юзерского кода в требования и контекст обхода.