gpt4 book ai didi

scala - 而不是使用看起来完全相同的两种方法,我怎么能提取泛型参数(一个是 List[T],另一个是泛型​​ T)

转载 作者:行者123 更新时间:2023-12-03 14:36:19 26 4
gpt4 key购买 nike

我有两个几乎做同样事情的方法,方法签名在这里:

def setProperty[T: TypeTag](name: String, value: T): Unit

def setProperty[T: TypeTag](name: String, value: List[T]): Unit

我只能声明两个方法,因为我想捕获 List 的泛型参数,而第一个方法不能。 我希望 value 正好是 List 实例而不是通用 T .如何将这两种方法合二为一?

最佳答案

通常,在这种情况下,ADT 是可行的方法

sealed trait Value[T]

case class Single[T](value: T) extends Value[T]

case class Multiple[T](values: List[T]) extends Value[T]

def setProperty[T: TypeTag](name: String, value: Value[T]): Unit = value match {
case Single(value) => ...
case Multiple(values) => ...
}

关于scala - 而不是使用看起来完全相同的两种方法,我怎么能提取泛型参数(一个是 List[T],另一个是泛型​​ T),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55795939/

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