说我有一个部分功能(类似于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并且我喜欢漂亮的代码;)
另外我很确定必须有一种通过反射的方法,虽然我不知道在编译/运行后如何表示部分函数.
您是否询问是否可以获得Any导致匹配的参数的所有输入的列表?如果这是您的问题,那么我相信答案是否定的。您所要做的就是isDefinedAt告诉您如果将 arg 提供给此部分函数,是否会导致匹配,但这可能不是您想要的。