I am trying to remove some duplicate code using Higher Order functions.
How this is different from calling Singleton Object method?
Sample Code:
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
}
How this is different from calling the same function using a Singleton object method.
filterDFForPaymentType(UtilClass.filterDF(df, "Manual"))
filterDFForPaymentType(UtilClass.filterDF(df, "Electronic"))
I'm sure we can do much more using Higher order functions, but i don't really getting the point.
Is this something correct way to use Higher-Order functions?
Can someone give me the link for proper usage of Higher-Order functions with examples?