2013-04-13 2 views
3

Документы Scala говорят, что flatten api выравнивает список списков и может быть вызван только в списке списков.Функция сглаживания

Почему можно вызвать его после следующего?

List(Some("Tony"), None).flatten 

ответ

9

ScalaDoc API показывает [use case] - упрощенное представление сигнатуры метода. Если вы нажмете на Full signature она будет расширяться в полную подпись:

Full Signature 
def flatten[B](implicit asTraversable: (A) ⇒ GenTraversableOnce[B]): List[B] 

Вы можете позвонить flatten по спискам, или на большинстве других коллекций по этому вопросу, до тех пор, пока существует неявное преобразование из элемента списка тип A (в вашем случае Option[String]) к любому другому типу.

Любой Option тип может быть неявно преобразован в GenTraversableOnce - Some действует как единый элемент коллекции и None как пустой коллекции. Это означает, что вы можете позвонить по телефону flatten по телефону List[Option[String]], чтобы получить List[String].

Смежные вопросы