Scala中为柯里化方法指定类型的编译错误问题求助
解决Scala柯里化函数类型定义的编译错误
你遇到的问题是因为Scala里柯里化的函数类型写法不是你尝试的那种连续参数列表形式,而是需要用嵌套的函数类型来表达——也就是先返回一个接收数据的函数。
正确的类型定义写法
你可以用两种等价的方式来定义这个柯里化的类型:
- 完整嵌套写法(更清晰展示结构):
type FTDataReductionProcess = (PipelineConfiguration) => (RDDLabeledPoint => RDDLabeledPoint)
- 简化写法(利用Scala箭头
=>的右结合特性):
type FTDataReductionProcess = PipelineConfiguration => RDDLabeledPoint => RDDLabeledPoint
这两种写法的意思完全一致:FTDataReductionProcess代表一个函数,它先接收PipelineConfiguration类型的参数,然后返回另一个函数——这个返回的函数接收RDDLabeledPoint类型的数据,最终返回处理后的RDDLabeledPoint。
怎么使用这个柯里化类型
举个简单的实现例子,帮你理解如何调用:
// 定义一个符合该类型的处理函数 val myReductionProcess: FTDataReductionProcess = config => data => { // 这里写你的处理逻辑,比如根据config过滤或转换data data.filter(_.label >= config.minLabelThreshold) } // 先传入配置,得到一个绑定了配置的函数 val boundProcess = myReductionProcess(myPipelineConfig) // 后续再传入数据进行处理 val processedData = boundProcess(myRddData)
这样就能实现你想要的“先传配置,后续再传数据”的需求啦。
内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

