1

次のようなメソッドがあります。

def myMethod[T](klazz:Class[T]):Z

Int => () => Zタイプの Map を作成して、コードでマップを参照して必要な s のみを生成できるようにしたいと考えていますZ

ただし、次のことを行うと:

Map( 0 -> myMethod(classOf[String]) _ , 1 -> myMethod(classOf[StringBuilder]))

どうすれば書くのを避けることができ() => myMethod(classOf[String])ますか?

4

2 に答える 2

4

myMethod関数を返すように単純に変更してみませんか?

def myMethod( clazz: Class[_]): () => Z = {
  { () => /* put the body of the old myMethod here */ }
}

次に、次のことができます。

Map( 0 -> myMethod(classOf[String]) , 1 -> myMethod(classOf[StringBuilder]))
于 2013-03-06T15:04:45.903 に答える
3

これを行う別の方法は、カスタム アソシエータを使用することです。

implicit class LazyMapArrow[K](val self: K) extends AnyVal {
  def ~>[V](other: => V): (K, () => V) = (self, () => other)
}
于 2013-03-06T19:13:52.063 に答える