Мне трудно понять, как сделать переход от определения функции высокого порядка Scala к представленному примеру. Он был представлен в этом слайд-шоу на слайде 81 .
Вот определение функции высшего порядка:
trait X[A] { def map[B](f: A => B): X[B] }
Вот предоставленные примеры:
(1 to 10) map { x => x * 2 } // evaluates to Vector(2, 4, ..., 20)
(1 to 10) map { _ * 2 } // shorthand!
А ?! Здесь просто ДОЛЖНЫ быть некоторые шаги, которые мне не хватает. Я понимаю, что в примерах могут использоваться как определение функции, так и некоторые тонкости Scala. Просто у меня пока недостаточно опыта чтения Scala и создания связанных предположений.
Мой опыт работы в Java OO. Сейчас я изучаю Scala и функциональное программирование. И это не первый такой пример, который я не понял. Это всего лишь первый случай, когда я почувствовал, что у меня хватило смелости опубликовать сообщение, зная, что я буду выглядеть невежественным.
Я действительно пытался исследовать это. Сначала я обратился к «библии» Scala «Программирование на Scala 2nd Edition» и попытался разобраться в if оттуда (страницы 165-9). Затем я выполнил поиск здесь, в StackOverflow. И я нашел несколько ссылок, которые говорят об этом районе. Но на самом деле ничто не показывает мне, ШАГ ЗА ШАГОМ, связь между определением функции высокого порядка Scala и предоставленными примерами таким образом, чтобы она соответствовала конкретному экземпляру на этом слайде.
Вот что я нашел на StackOverflow:
Я только сейчас понимаю, что я пропустил Google и сразу перешел на StackOverflow. Хм. Если вы загуглите и найдете нужную ссылку, я буду рад ее увидеть. У меня не хватило времени, чтобы просмотреть все ссылки Google, в которых используются такие термины, как обезьяна-монада, бластоморфизмы и т. Д., Что еще больше сбило меня с толку и меньше шансов попытаться понять это.