В REPL я определяю функцию. Обратите внимание на тип возврата.
scala> def next(i: List[String]) = i.map {"0" + _} ::: i.reverse.map {"1" + _}
next: (i: List[String])List[java.lang.String]
И если я укажу тип возврата как String
scala> def next(i: List[String]): List[String] = i.map {"0" + _} ::: i.reverse.map {"1" + _}
next: (i: List[String])List[String]
Почему разница? Я также могу указать тип возвращаемого значения как List [Any], поэтому я предполагаю, что String - это просто супертип оболочки для java.lang.String. Будет ли это иметь какие-либо практические последствия или я могу безопасно не указывать тип возврата?