我有很多function LongestWord(sen) {
var wordArray = sen.match(/\w+/gi);
var longest = 0;
var word = undefined;
for(var i = 0; i < wordArray.length; i++){
if(wordArray[i].length > longest){
word = wordArray[i];
longest = word.length;
}
}
return word;
}
个函数必须都返回相同的类型,例如process
。这些不同的函数都有不同的参数,但我需要结合它们的输出。那么有没有一种方法可以使用类型系统 - 可能是通过特征 - 来保证我的所有List[(String, Int)]
函数都返回相同的类型?
E.g:
process
答案 0 :(得分:6)
您可以使用参数化类型执行此操作。
// 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