gpt4 book ai didi

generics - 未知类型的最小值/最大值

转载 作者:行者123 更新时间:2023-12-04 23:07:54 26 4
gpt4 key购买 nike

是否有可能获得 MinValue - 或 MaxValue未知的 T 型?如 Int其中有 Int.MinValueInt.MaxValue ??

谢谢

最佳答案

正如@mpilquist 在上面的评论中所说,您可以创建一个 Bounded键入类 a la 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
}
}

附录:

您甚至可以将其扩展到您的自定义类型,如下所示:
// 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

关于generics - 未知类型的最小值/最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6635460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com