/ / Scala Implicitジェネレーター-Scala、Implicit-Conversion、Implicit、scalaz、scalaz7

スカラ暗黙的なジェネレータ - スカラ、暗黙的変換、暗黙的、スカラズ、scalaz7

から暗黙的に持っている場合 AB、どのようにしてから暗黙の自動取得を行うことができますか F[A]F[B]

たとえば、私が持っている場合 implicit toInt[A](l: List[A]) = l.size そして今、私はから暗黙のうちにしたい (List[A], Int)(Int, Int) 再利用する toInt 暗黙。 Scalaでもそれは可能ですか?

回答:

回答№1は4

暗黙的は、他の暗黙的を使用して値を変換できます。だからあなたの与えられた toInt

implicit def toInt[A](l: List[A]): Int = l.size

2タプルの最初の要素を変換する暗黙的な変換を定義できます Int(List[Int], Int)(Int, Int)

implicit def tupleConvert[A <% Int, C](x: (A, C)): (Int, C) = (x._1, x._2)

A <% Int ビューバインドを宣言し、暗黙的な変換が必要です AInt 呼び出しスコープで使用可能になります。

次のように見えるかもしれません:

implicit def tupleConvert2[A <% B, B, C](x: (A, C)): (B, C) = (x._1, x._2)

タイプの2タプルを変換できるようにします (A, C)(B, C) からの変換が与えられた AB。ただし、Scalaが暗黙的に型パラメーターを解決する方法のため、これは機能しません*。

*(これはバグの可能性があります。SI-2046によく似ています。これは、まだオープンされているSI-3340の複製です)