1

私はデータオブジェクトを持っています:

case class Id(val value: String) extends AnyVal {
  def bind[A](f: ((String) => A)): A = {
    f(value)
  }
}

Id を の最初の引数にバインドしたいString.format:

id.bind(template.format)

しかし、私はエラーが発生しますtype mismatch: Seq[Any] => String => String

これはtemplate.format、さまざまな量の引数を取ることができるためだと思います。

このような再利用可能なバインド関数を作成する方法はありますか?

編集:(教えて聞かない戦略を実装しようとしているので、Idの値をリークしたくありません)

4

1 に答える 1

0

バインドの呼び出しでラムダを使用する場合、すべて問題ないはずです。

id.bind(s => template.format(s))

または、bind 関数を accept に変更することもできますSeq[Any]

def bind[A](f: ((Seq[Any]) => A)): A = {
  f(Seq(value))
}

または:

def bind[A](f: (String*) => A): A = {
    f(value)
}

id.bind(template.format) // Works!!!
于 2013-08-23T14:34:37.153 に答える