Use two type parameters for two related fields.

Generic Pair Fields

GenericPairFields.scala
case class PairBox[A, B](left: A, right: B)

object Main {
  def main(args: Array[String]): Unit = {
    val label = 
    val count = 4
    val pair = PairBox[String, Int](label, count)
    val summary = pair.left + ":" + pair.right

    println("left=" + pair.left)
    println("right=" + pair.right)
    println("summary=" + summary)
  }
}
case class PairBox[A, B](left: A, right: B)

object Main {
  def main(args: Array[String]): Unit = {
    val label = 
    val count = 4
    val pair = PairBox[String, Int](label, count)
    val summary = pair.left + ":" + pair.right

    println("left=" + pair.left)
    println("right=" + pair.right)
    println("summary=" + summary)
  }
}
case class PairBox[A, B](left: A, right: B)

object Main {
  def main(args: Array[String]): Unit = {
    val label = 
    val count = 4
    val pair = PairBox[String, Int](label, count)
    val summary = pair.left + ":" + pair.right

    println("left=" + pair.left)
    println("right=" + pair.right)
    println("summary=" + summary)
  }
}
two-type-parameters `PairBox[A, B]` can hold values with two different types. The example reads the fields separately and formats a scalar summary.