0

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
  } 
}
4

1 に答える 1

1

はい。タイプパラメータ、関数合成、カリー化などで、あなたがやりたいことをする方法を見つけることができると私は確信しています。あなたの質問にもっと具体的なものがなければ、しかしもっと具体的な答えを提供するのは難しいです。

于 2013-01-19T05:41:48.097 に答える