允许Scala函数的多个选择

时间:2018-01-06 18:40:24

标签: scala apache-spark

我们有一个scala函数,可根据年份选择文档,即

def keepDate(date: String, component: DateComponent = DateComponent.YYYYMMDD) = {
   rdd.filter(r => ExtractDate(r.getCrawlDate, component) == date)
}

它在像这样的代码中使用,它起作用:

.keepDate("2007", YYYY)

然而,我们想要做的是允许多重匹配 - 即一些变体:

.keepDate("2007", "2010", YYYY)

到目前为止,我尝试这样做的尝试都失败了。我们使用的确切语法并不重要,但任何指导都会非常感激。

2 个答案:

答案 0 :(得分:2)

我会采用多种参数列表:

def keepDate(component: DateComponent = DateComponent.YYYYMMDD)(dates: String*) = {
  rdd.filter(r => dates.contains(r => ExtractDate(r.getCrawlDate, component)))   
}

使用它是这样的:

keepDate(YYYY)("2010", "2012)

如果日期的数量足够大,请考虑使用Set[String]代替varargs(这会更冗长,但效率更高)。

答案 1 :(得分:0)

.keepDate(List("2007", "2010"), YYYY)

现在你可以像这样使用它,

public abstract class BaseService<T>
{
public abstract void Read(T param);
}