Расширение типов Scala / вывод foo [T] (T, T): T

Предположим, есть три функции:

def foo[T](a:T, b:T): T = a 
def test1 = foo(1, "2") 
def test2 = foo(List(), ListBuffer()) 

Пока test1 имеет тип Any, test2 не компилируется. Это почему? И List (), и ListBuffer () относятся к типу Any, так почему же test2 также не относится к типу Any? Также оба они имеют тип SeqFactory, так может ли Scala каким-то образом сделать вывод, что тип test2 - это SeqFactory?

foo (ListBuffer (), "") и foo (List (), "") работают должным образом

7
задан Tom 20 April 2011 в 20:09
поделиться