gpt4 book ai didi

Scala:有什么方法可以在允许任何参数的情况下强制特征返回某种类型?

转载 作者:行者123 更新时间:2023-12-01 10:37:02 26 4
gpt4 key购买 nike

我有很多 process 函数必须全部返回相同的类型,例如列表[(String, Int)]。这些不同的函数都采用不同的参数,但我需要组合它们的输出。那么有没有一种方法可以使用类型系统(可能是通过特征)来保证我所有的 process 函数都将返回相同的类型?

例如:

object ProcessData1 {
def process(input: String): List[(String, Int)] = ???
}


object ProcessData2 {
def process(input: Seq[String], flag: Boolean): List[(String, Int)] = ???
}

最佳答案

您可以使用参数化类型来做到这一点。

// Input is a type variable. Could also be "A" or any other type identifier
trait Processor[Input] {
def process(input: Input): List[(String, Int)]
}

// This defines Input = String for this class
object ProcessData1 extends Processor[String] {
def process(input: String): List[(String, Int)] = ???
}

// Note the tupling
object ProcessData2 extends Processor[(Seq[String], Boolean)] {
def process(rawInput: (Seq[String], Boolean)): List[(String, Int)] = {
val (input, flag) = rawInput
???
}
}

不幸的是,它们必须都具有相同的函数元数,但您可以通过将您想要的参数元组化来解决这个问题,如 ProcessData2

关于Scala:有什么方法可以在允许任何参数的情况下强制特征返回某种类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33505388/

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