普通源代码中的模板方法?

时间:2013-01-19 05:23:40

标签: scala

在Scala中,你可以做一些事情,例如将函数变量作为参数等传递,但我想知道是否可以有更多类似模板的模板?

在这个简单的例子中(不编译,只是我想要的骨架),包装函数包含一些几乎完全相同的代码,但只有一行不同。假设包装器是一个长骨架,我不想写两次,我可以传入sub1sub2吗?请注意,这两个函数具有不同的签名,这使得它不适合于咖喱解决方案:

object MyTemplate{

  def sub1(a: Int): String={
    a.toString
  }

  def sub2(b: String, c: String): Int={
    return b.toInt*x
  }

  def wrapper(i: Int)(f: ???): Double ={
    if (xxxx)
        do something
     else 
         do something else 
         [this line needs to call either sub1() or sub2() ] 

     common code continues
  } 
}

1 个答案:

答案 0 :(得分:1)

是。我相信,通过类型参数,功能组合,currying等,你可以找到一种方法来做你想要的。如果您的问题没有更具体的细节,那么很难提供更具体的答案。