В случае:
valUnique _
Вы частично применяете метод valUnique
, вызывая его упаковку в виде функции.
С другой стороны:
valUnique(_)
указывает местозаполнитель для вызова метода valUnique
, что обычно делается для передачи анонимной функции какой-либо другой функции высокого порядка, например:
emails flatMap { valUnique(_) }
В вашем случае в области действия нет ничего, что можно было бы использовать для выполнения такого заполнителя, хотя частичное применение все еще полностью допустимо.
Обратите внимание, что вы также можете поднять метод до функции перед передачей его в качестве аргумента:
emails flatMap { valUnique _ }
Это сходство почти наверняка является причиной вашего замешательства, хотя эти две формы не делают совсем то же самое за кадром.