У меня есть система, управляемая событиями, которая реагирует на сделки следующим образом
def onTrade {
if (price > threshold) {
processReject()
return
}
if (volume > threshold) {
processReject()
return
}
.
.
.
}
Я думал, что могу улучшить синтаксически, определив внутренний метод
def onTrade {
def filterRemove = (filter: Boolean) => {
if (filter) {
processReject()
}
filter
}
val filters = List(
filterRemove(price > threshold),
filterRemove(volume > threshold),...
)
if (filters.filter(x => x == true).size > 0) return
}
Синтаксис особенно чистпо мере увеличения количества фильтров.Единственная проблема, с которой я столкнулся, заключается в том, что код тратит ненужные тактовые циклы, проходя каждый отдельный тест, а не возвращаясь при первом сбое.Это как-то обойти это?Например, выход из onTrade, как только filterRemove вернет false.Если есть более выразительный способ сделать это, я бы тоже хотел это знать.