gpt4 book ai didi

oop - 从一等函数访问类成员

转载 作者:行者123 更新时间:2023-12-04 13:43:06 25 4
gpt4 key购买 nike

我有一个带有函数列表的案例类:

case class A(q:Double, r:Double, s:Double, l:List[(Double)=>Double])

我定义了 20 多个函数。其中一些函数有自己的参数,其中一些还使用案例类中的 qrs 值。两个例子是:

def f1(w:Double) = (d:Double) => math.sin(d) * w
def f2(w:Double, q:Double) = (d:Double) => d * q * w

问题是我在实例化案例类时需要引用qrs两次:

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 个。只有少数功能需要访问成员。大多数函数都不关心它们。

最佳答案

如果 f2 中的 q 总是 指的是 case 类中的 q,然后快速破解:

trait TraitA {                                                                                       
def q:Double
def r:Double
def s:Double

def f1(w:Double) = (d:Double) => math.sin(d) * w
def f2(w:Double) = (d:Double) => d * q * w
}

case class A(q:Double, r:Double, s:Double, l:List[(Double)=>Double]=Nil) extends TraitA

val a=new A(0.5, 1.0, 2.0){override val l= List(f1(3.0), f2(4.0))}

关于oop - 从一等函数访问类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2860222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com