2015-08-08 2 views
0

У меня есть следующий фрагмент кода -Как работают заполнители в Scala?

object TextTransformer { 
    def transform (strings: String*)= { 
     println(strings.map(x => x.toLowerCase())) 
     println(strings.map(_.toUpperCase())) 
    } 
} 

В строчной версии, мы используем анонимную функцию и передавая аргумент x к ней, что имеет смысл.

Что такое магия за toUpperCase функция? Что делать, если переменная уже была определена как _? Как map может работать с возвращаемым значением _.toUpperCase() вместо использования _.toUpperCase как итерации?

ответ

1

Нет никакой магии. Эти две линии одинаковы. Использование placeholder - синтаксический сахар для случаев, когда параметр функции используется только один раз в теле функции.

+0

Но почему я не передаю его как '_.toUpperCase', а не' _.toUpperCase() ' – Tushar

+0

@Tushar, вы можете использовать оба варианта, и в этом случае нет никакой разницы между ними. –

+0

Разве это не смущает? – Tushar

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