我有一个带有函数列表的案例类:
case class A(q:Double, r:Double, s:Double, l:List[(Double)=>Double])
我定义了 20 多个函数。其中一些函数有自己的参数,其中一些还使用案例类中的q
、r
和s
值。两个例子是:
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!
实现这一目标的最佳技术是什么?我可以在案例类扩展的特征中定义我的函数吗?
编辑:现实世界的应用程序有 7 个成员,而不是 3 个。只有少数功能需要访问成员。大多数功能都不关心它们。