gpt4 book ai didi

scala - Scala 中所有函数的父类(super class)型是什么?

转载 作者:行者123 更新时间:2023-12-01 09:59:27 24 4
gpt4 key购买 nike

我知道我可以对 Function1Function2 等进行 instanceOf 检查,但是是否有通用的方法来查看某些功能是否正常(它可以有任意数量的参数)。我试着定义这样的东西:

type FuncType = (Any*) -> Any

但这也不起作用。基本上我有一些看起来像这样的代码:

call = (name: Any, args: Any*) -> if name.isFunction then name.castAs[Function].apply(args) else name
aFunction = (name: String) => "Hello " + name
notAFunction = "Hello rick"
call(aFunction, "rick")
call(notAFunction)

最佳答案

没有适用于所有函数类型的通用父类(super class)型。

Scala 无法对函数的元数进行抽象。但是,您可能会查看 Shapeless库,它引入了一个叫做 HList 的东西,你可以用它来抽象函数的数量。

但是,我认为这并不是您真正需要的。听起来您只想检查“这是一个功能吗?”您可能会认为没有与元数无关的 Function 父类(super class)型很奇怪,但是如果您想用它做一些有用的事情,您几乎总是需要知道函数的元数。

或者,您可以对函数使用 curried 方法,这将返回一个 Function1

关于scala - Scala 中所有函数的父类(super class)型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18544330/

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