Scala: перегрузка метода над универсальными типами

В 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] стираются до одного и того же типа из-за стирания. Я слышал, что Scala Manifest s может использоваться для работы это, но я не знаю как. Я тоже не нашел ничего полезного в документации.

Итак, мой вопрос: Как использовать Manifest (или что-то еще, что работает) для перегрузки методов над универсальными типами, которые стираются до того же типа из-за стирания?

11
задан Ken Bloom 13 February 2011 в 05:49
поделиться