在同一输入上比较不同函数的结果的一般方法

时间:2014-06-18 10:12:50

标签: scala functional-programming

背景是我有很多方法可以进行查找或估算,我希望能够进行比较 结果我从每个回来。

这可能是选择具有最佳置信度的一个或选择多数 从集合。

首先,如果已经存在可能有用的东西,那么在我变得更深入之前会很有用。

(我的谷歌搜索没有提供任何有用的东西)

我有以下方法似乎作为一个起点,但我不确定这是否是正确的方法,所以会很感激 评论和批评。

(我知道这个例子并不适合上面的用例,但它们是最简单的例子)

trait TagFunction[A,B] {
  def tag: String
  def fn: A => B
  def apply(v: A) = (tag, fn(v))
}  

object Spong extends TagFunction[String,Option[String]] {
  val tag = "spong"
  val fn = (s: String) => if (s.length > 0 ) Some(s.toUpperCase) else None 
}

object Glarg extends TagFunction[String,Option[String]] {
  val tag = "glarg"
  val fn = (s: String) => if (s.length > 2 ) Some(s.reverse) else None 
}

val sf = Seq(Spong, Glarg)

sf.map(f => f("Trog"))

sf.map(f => f("a"))

0 个答案:

没有答案