【发布时间】:2020-06-13 07:21:13
【问题描述】:
我正在通过一些练习来习惯 Scala 的类型系统。我有一个用于运行单元测试的辅助函数,我在其中指定函数的输入和预期输出。在这种情况下,我正在测试的函数返回列表的前 n 个元素:
val inputs: List[TestCase[(List[Any], Int), List[Any]]] = List(
TestCase(
input = (List('a', 't', 'o'), 2),
output = List('a', 't')
),
TestCase(
input = (List("Vegetable", "Fruit"), 4),
output = List("Vegetable", "Fruit")
),
TestCase(
input = (List(3.14, 6.22, 9.5), -7),
output = Nil
)
)
我的问题是是否可以为此 input val 指定类型参数。 List[Any] 没问题,但我想以某种方式指定输入列表与输出列表具有相同类型的元素。像这样的东西(顺便说一句不起作用):
val inputs[SameType]: List[TestCase[(List[SameType], Int), List[SameType]]] = ...
如果有任何建议,我将不胜感激。也许类型参数不适合与 vals 一起使用?
如果你想知道为什么我不只是断言结果:这是因为我有同一个函数的多个实现,我不想为每个实现重复测试用例。
【问题讨论】: