获取部分函数的已定义参数

raw*_*phl 5 reflection scala

说我有一个部分功能(类似于Akka的演员接收方法)

def receive: PartialFunction[Any, Unit] = {
    case SomeCaseClass(params) => println("whatever")
}
Run Code Online (Sandbox Code Playgroud)

有没有办法获得这个函数的所有定义参数?

我正在实现类似JSON RPC的服务结构.我基本上希望客户能够通过部分功能定义服务.

def clientService = {
    case Connect(login, password) =>.....
    case SomeMessage => ...
    case SomeMethod(bla) => ..
}
Run Code Online (Sandbox Code Playgroud)

例如,第一种方法将被翻译出来

{method: "connect", params:{login: "asdsad", password: "adsada"}}
Run Code Online (Sandbox Code Playgroud)

(此部分已经有效)

现在,如果客户端已经定义了服务而另一个客户端想知道服务的可用方法,我现在需要知道服务接受哪种类型的案例类,以便我可以告诉请求的客户端.我知道我可以使用对象中的常规方法轻松完成此操作,但由于我解析JSON并将其转换为case类,部分函数将简化我的API并且我喜欢漂亮的代码;)

另外我很确定必须有一种通过反射的方法,虽然我不知道在编译/运行后如何表示部分函数.

cmb*_*ter 1

您是否询问是否可以获得Any导致匹配的参数的所有输入的列表?如果这是您的问题,那么我相信答案是否定的。您所要做的就是isDefinedAt告诉您如果将 arg 提供给此部分函数,​​是否会导致匹配,但这可能不是您想要的。