我知道我能做到instanceOf
检查Function1
or Function2
等等,但是有没有一种通用的方法来查看某些东西是否功能正常(它可以有任意数量的参数)。我尝试定义这样的东西:
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)
没有适用于所有函数类型的通用超类型。
Scala 无法抽象函数的数量。但是,您可能会查看无形的 https://github.com/milessabin/shapeless库,它引入了一个叫做HList
您可以使用它来抽象函数的数量。
但是,我认为这并不是您真正需要的。听起来你只是想做一个检查,比如“这是一个函数吗?”你可能会觉得没有参数不可知论很奇怪Function
超类型,但如果你想用函数做一些有用的事情,你几乎总是需要知道函数的数量。
或者,您也许可以使用curried
函数上的方法,它将返回一个Function1
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)