From 60011d873bfcd15b38e6445ccb51c32de28e9377 Mon Sep 17 00:00:00 2001 From: Anastasia Ostretsova Date: Fri, 28 Jun 2019 20:28:21 +0300 Subject: [PATCH 1/2] Translate "Partial application" part into russian --- _ru/tour/multiple-parameter-lists.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/_ru/tour/multiple-parameter-lists.md b/_ru/tour/multiple-parameter-lists.md index d1938cb4b0..f58066b0e8 100644 --- a/_ru/tour/multiple-parameter-lists.md +++ b/_ru/tour/multiple-parameter-lists.md @@ -78,3 +78,20 @@ numbers.foldRight(0)(_+_) // Форма с каррированием def execute(arg: Int)(implicit ec: ExecutionContext) = ??? ``` +#### Частичное применение + Когда метод вызывается с меньшим количеством списков параметров, то результатом будет функция, + которая принимает в качестве параметров недостающие списки. Это официально известно как + [частичное применение](https://ru.wikipedia.org/wiki/%D0%A7%D0%B0%D1%81%D1%82%D0%B8%D1%87%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5). + + Например, + + ```tut + val numbers = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) + val numberFunc = numbers.foldLeft(List[Int]()) _ + + val squares = numberFunc((xs, x) => xs :+ x*x) + print(squares) // List(1, 4, 9, 16, 25, 36, 49, 64, 81, 100) + + val cubes = numberFunc((xs, x) => xs :+ x*x*x) + print(cubes) // List(1, 8, 27, 64, 125, 216, 343, 512, 729, 1000) + ``` \ No newline at end of file From 61cbc3266b2d32e23d689151a4ad53b1e056c57a Mon Sep 17 00:00:00 2001 From: Anastasia Ostretsova Date: Sat, 29 Jun 2019 13:06:37 +0300 Subject: [PATCH 2/2] Leave just an example --- _ru/tour/multiple-parameter-lists.md | 33 ++++++++++++---------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/_ru/tour/multiple-parameter-lists.md b/_ru/tour/multiple-parameter-lists.md index f58066b0e8..019f17d77d 100644 --- a/_ru/tour/multiple-parameter-lists.md +++ b/_ru/tour/multiple-parameter-lists.md @@ -15,6 +15,19 @@ previous-page: nested-functions Методы могут объявляться с несколькими списками параметров. При этом когда такой метод вызывается с меньшим количеством списков параметров, это приводит к созданию новой функции, которая ожидает на вход не достающий список параметров. Формально это называется [частичное применение](https://en.wikipedia.org/wiki/Partial_application). +Например, + + ```tut + val numbers = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) + val numberFunc = numbers.foldLeft(List[Int]()) _ + + val squares = numberFunc((xs, x) => xs :+ x*x) + print(squares) // List(1, 4, 9, 16, 25, 36, 49, 64, 81, 100) + + val cubes = numberFunc((xs, x) => xs :+ x*x*x) + print(cubes) // List(1, 8, 27, 64, 125, 216, 343, 512, 729, 1000) + ``` + Рассмотрим такие примеры из класса [Traversable](/overviews/collections/trait-traversable.html) коллекции Scala: ``` @@ -76,22 +89,4 @@ numbers.foldRight(0)(_+_) // Форма с каррированием ``` def execute(arg: Int)(implicit ec: ExecutionContext) = ??? -``` - -#### Частичное применение - Когда метод вызывается с меньшим количеством списков параметров, то результатом будет функция, - которая принимает в качестве параметров недостающие списки. Это официально известно как - [частичное применение](https://ru.wikipedia.org/wiki/%D0%A7%D0%B0%D1%81%D1%82%D0%B8%D1%87%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5). - - Например, - - ```tut - val numbers = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) - val numberFunc = numbers.foldLeft(List[Int]()) _ - - val squares = numberFunc((xs, x) => xs :+ x*x) - print(squares) // List(1, 4, 9, 16, 25, 36, 49, 64, 81, 100) - - val cubes = numberFunc((xs, x) => xs :+ x*x*x) - print(cubes) // List(1, 8, 27, 64, 125, 216, 343, 512, 729, 1000) - ``` \ No newline at end of file +``` \ No newline at end of file