Например, при анализе данных о реальном фондовом рынке я предоставляю метод своим клиентам
def onTrade(trade: Trade) {
}
Клиенты могут делать что угодно: от подсчета количества сделок, вычисления средних значений, хранения высоких минимумов, сравнения цен и т.д. Метод, который я выставляю, ничего не возвращает, и клиенты часто используют vars и изменяемые структуры для их вычисления. Например, при вычислении общих сделок они могут делать что-то вроде
var numTrades = 0
def onTrade(trade: Trade) {
numTrades += 1
}
Один вызов onTrade может потребовать шесть или семь разных вещей. Есть ли способ примирить этот тип гибкости с функциональной парадигмой? Другими словами, тип возврата, vals и не подлежащие обработке структуры данных