В C # я могу перегрузить методы универсального типа, как показано в примере ниже:
// http://ideone.com/QVooD
using System;
using System.Collections.Generic;
public class Test {
public static void Foo(List<int> ints) {
Console.WriteLine("I just print");
}
public static void Foo(List<double> doubles) {
Console.WriteLine("I iterate over list and print it.");
foreach(var x in doubles)
Console.WriteLine(x);
}
public static void Main(string[] args) {
Foo(new List<int> {1, 2});
Foo(new List<double> {3.4, 1.2});
}
}
Однако, если я попытаюсь сделать то же самое в Scala, это вызовет ошибку времени компиляции, из-за которой List[Int]
и List[Double]
стираются до одного и того же типа из-за стирания. Я слышал, что Manifest
можно использовать в Scala, но я не знаю как. Я также не нашел ничего полезного в документах.
Итак, мой вопрос: как я могу использовать Manifest
s (или что-то еще, что работает), чтобы перегрузить методы для универсальных типов, которые стираются в тот же тип из-за стирания?