Scalaでは関数変数をパラメータとして渡すなどのことができますが、テンプレート的な機能がもっとあるのではないでしょうか?
この単純な例 (コンパイルしません。必要なもののスケルトンにすぎません) では、ラッパー関数にほぼ同じコードが含まれていますが、1 行だけが異なります。ラッパーが、2 回書きたくない長いスケルトンであるとしsub1
ますsub2
。これら 2 つの関数のシグネチャが異なるため、カリー化されたソリューションには適していないことに注意してください。
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
}
}