所以问题在于理解 shapeless 库的 HLists https://github.com/milessabin/shapeless ;
我正在使用
它说“应用程序不接受参数”。那么我该怎么处理呢?也许我没有理解某些东西?我是Scala新手。
附注:构造函数有一个有趣的效果,这段代码构建有点不正确:
编辑:
“p.s.”已经解决 -
HLists
存储一些函数,例如:val list = HList(
function1(_),
function2(_),
....
functionn(_)
);
它很完美地工作:我可以从列表中选择任何函数并应用它:list.head(object)
但是,我在使用map
函数(list map mapFunc
)时遇到了问题:
object mapFunc extends Poly1 {
implicit def default[T] =
at[T](t => {
t(obj)
})
}
它说“应用程序不接受参数”。那么我该怎么处理呢?也许我没有理解某些东西?我是Scala新手。
附注:构造函数有一个有趣的效果,这段代码构建有点不正确:
function1(_):: function2(_):: HNil
被识别为某种类型的函数,但HList(function1(_),function2(_))
具有正确的类型。编辑:
“p.s.”已经解决 -
function1(_):: function2(_):: HNil
确实有类型不匹配的问题;但是function1 _ :: function2 _ :: HNil
没问题!
HNil
,我在提问时弄错了,已经修正了,谢谢! - DaunnCdef function1(s: Type1) = convertType1ToType2
...def functionn(s: Typen-1) = convertTypen-1ToTypen
; 我的意思是,类似于at[FromType => ToType]
;也许有一种方法可以不编写所有情况来应用隐式函数吗? - DaunnCimplicit def funcTo[T] = at[T](t => someObject.hlist = t :: someObject.hlist)
然后应用此map函数后,我们将得到包含HList的someObject
:someObject.hlist
;但是,如果我们按照上面所写的那样做,我们无法从这个新的HList中应用函数:someObject.hlist.head(object)
会给我们“Application doesnt take parameters”错误。 - DaunnC