У меня есть класс case, который принимает список функций:
case class A(q:Double, r:Double, s:Double, l:List[(Double)=>Double])
У меня определено более 20 функций. Некоторые из этих функций имеют свои собственные параметры, а некоторые из них также используют значения q
, r
и s
из класса case. Два примера:
def f1(w:Double) = (d:Double) => math.sin(d) * w
def f2(w:Double, q:Double) = (d:Double) => d * q * w
Проблема в том, что мне нужно дважды ссылаться на q
, r
и s
при создании экземпляра класса дела:
A(0.5, 1.0, 2.0, List(f1(3.0), f2(4.0, 0.5))) //0.5 is referenced twice
Я хотел бы иметь возможность создать экземпляр класса следующим образом:
A(0.5, 1.0, 2.0, List(f1(3.0), f2(4.0))) //f2 already knows about q!
Какая лучшая техника для этого? Могу ли я определить свои функции по признаку, который расширяет класс case?
РЕДАКТИРОВАТЬ: приложение реального мира имеет 7 членов, а не 3. Доступ к членам имеет только небольшое количество функций. Большинство функций не заботятся о них.