Scala 是否在运行时在方法类型参数化中提供结构类型?
后续行动 假设我有密码Scala 是否在运行时在方法类型参数化中提供结构类型?,scala,reflection,structural-typing,Scala,Reflection,Structural Typing,后续行动 假设我有密码 def bar(param: {def foo: Unit}*) = param.foreach(x => x.foo) 此函数使objectparam调用名为foo [编辑] 我想知道以下是否可能(有或没有思考) param在编译时是固定的,函数名(在本例中为foo)在运行时提供 param和函数名foo都是在运行时提供的 param在编译时是固定的,函数名、函数参数、值和返回类型在运行时提供 我意识到结构类型已经使用了反射。所以我的问题是Scala是否可以
def bar(param: {def foo: Unit}*) = param.foreach(x => x.foo)
此函数使objectparam
调用名为foo
[编辑]
我想知道以下是否可能(有或没有思考)
在编译时是固定的,函数名(在本例中为param
)在运行时提供foo
和函数名param
都是在运行时提供的foo
在编译时是固定的,函数名、函数参数、值和返回类型在运行时提供param
我意识到结构类型已经使用了反射。所以我的问题是Scala是否可以处理它,或者我是否在代码中明确使用了反射。我认为第三个需要思考,我可以使用图书馆 如果我理解你的问题:
param
是否确实有一个签名正确的方法foo
param
因此,您不需要自己使用反射,但您应该记住,反射将在运行时使用,并且可能会降低性能。问题是,如果我不知道要调用的函数的名称(在本例中为
foo
),则(例如,请用户提供)。然后您不能依赖结构类型,因为第一步是在编译时(请参阅答案)。你应该只使用普通的旧反射。