gpt4 book ai didi

scala - 将通用类型限制为特定类型

转载 作者:行者123 更新时间:2023-12-01 22:42:28 25 4
gpt4 key购买 nike

有时,我会处理包含以下内容的 java:

def printDbl(d:Double) { println("dbl: " + d) }
def printInt(i:Int) { println("int: " + i) }

当然,我想用一些 scala 包装它,最终看起来像这样:

def print[T:Manifest] (t:T) {
if (manifest[T] <:< manifest[Int]) { printInt(t.asInstanceOf[Int]) ; return }
if (manifest[T] <:< manifest[Double]) { printDbl(t.asInstanceOf[Double]) ; return }

throw new UnsupportedOperationException("not implemented: " + manifest[T])
}

但是当我运行以下命令时,出现运行时异常:

print(1)
print(2.0)
print("hello")

我似乎记得有一种方法可以在编译时捕获它,但我似乎无法用谷歌搜索它。也许一些聪明的隐含转换?

最佳答案

你为什么不利用方法重载的优势,像这样编写你的 Scala 包装器呢?:

object Printer {
def print(d: Double) { printDbl(d) }
def print(i: Int) { printInt(i) }
}

这非常简单并提供了所需的行为:

import Printer._
print(1.) // dbl: 1.0
print(1) // int: 1
print("hello") // compile-time type error

关于scala - 将通用类型限制为特定类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10327276/

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