首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以fn为参数的高阶函数与调用单例对象方法

以fn为参数的高阶函数与调用单例对象方法
EN

Stack Overflow用户
提问于 2016-12-06 09:06:58
回答 1查看 121关注 0票数 0

我正在尝试使用高阶函数删除一些重复的代码。

这与调用Singleton对象方法有何不同?

示例代码:

代码语言:javascript
复制
filterDFForPaymentType(filterDF, df, "Manual")
filterDFForPaymentType(filterDF, df, "Electronic")

def filterDFForPaymentType(fn: (DataFrame, String) => DataFrame, df: DataFrame, paymentType: String) {
      fn(df, paymentType)
}

def filterDF(df: DataFrame, paymentType: String): DataFrame = {
      val filteredDF = df.where(col("paymenttypecol") === paymentType)
      filteredDF
}

这与使用Singleton对象方法调用相同的函数有何不同。

代码语言:javascript
复制
filterDFForPaymentType(UtilClass.filterDF(df, "Manual"))
filterDFForPaymentType(UtilClass.filterDF(df, "Electronic"))

我相信我们可以用高阶函数做更多的事情,但我不太明白。

这是使用高阶函数的正确方法吗?

有人能给我链接,以正确使用高阶函数的例子吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-06 10:12:33

这里的filterDFForPaymentType函数除了返回其他函数的结果之外,什么也不做,在这种情况下,代码可以缩短为

代码语言:javascript
复制
filterDF(df, "Manual")
filterDF(df, "Electronic")
def filterDF(df: DataFrame, paymentType: String): DataFrame = {
      val filteredDF = df.where(col("paymenttypecol") === paymentType)
      filteredDF
}

高阶函数在实现某些逻辑时是有用的(即在集合中,解构和构造集合),同时使用传递的函数作为集合的一部分。在可选地使用传递的函数的情况下,性能可能会有所不同。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40991504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档