正如@mpilquist在上面的评论中所说,你可以创建一个Bounded类型类和一个Haskell.
代码示例:
trait Bounded[A] {
def minValue: A
def maxValue: A
}
object Bounded {
def apply[A](min: A, max: A) = new Bounded[A] {
def minValue = min
def maxValue = max
}
implicit val intBounded = Bounded(Int.MinValue, Int.MaxValue)
implicit val longBounded = Bounded(Long.MinValue, Long.MaxValue)
}
object Main {
def printMinValue[A : Bounded](): Unit = {
println(implicitly[Bounded[A]].minValue)
}
def main(args: Array[String]): Unit = {
printMinValue[Int]() // prints -2147483648
printMinValue[Long]() // prints -9223372036854775808
}
}
Run Code Online (Sandbox Code Playgroud)
附录:
您甚至可以将其扩展为自定义类型,如下所示:
// A WeekDay ADT
sealed abstract trait WeekDay
case object Mon extends WeekDay
case object Tue extends WeekDay
case object Wed extends WeekDay
case object Thu extends WeekDay
case object Fri extends WeekDay
case object Sat extends WeekDay
case object Sun extends WeekDay
object WeekDay {
implicit val weekDayBounded = Bounded[WeekDay](Mon, Sun)
}
printMinValue[WeekDay]() // prints Mon
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1028 次 |
| 最近记录: |