You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/99-js-misc/03-currying-partials/article.md
+25-25Lines changed: 25 additions & 25 deletions
Original file line number
Diff line number
Diff line change
@@ -36,13 +36,13 @@ let curriedSum = curry(sum);
36
36
alert( curriedSum(1)(2) ); // 3
37
37
```
38
38
39
-
După cum puteți vedea, implementarea este directă: este vorba doar de două wrappere.
39
+
După cum puteți vedea, implementarea este directă: este vorba doar de două învelișuri.
40
40
41
-
- Rezultatul lui `curry(func)` este un wrapper`function(a)`.
42
-
- Atunci când este apelat ca `currySum(1)`, argumentul este salvat în mediul lexical și se returnează un nou wrapper`function(b)`.
43
-
- Apoi, acest wrapper este apelat cu `2` ca argument, iar apelul este transmis către `sum` original.
41
+
- Rezultatul lui `curry(func)` este un înveliș`function(a)`.
42
+
- Atunci când este apelat ca `currySum(1)`, argumentul este salvat în mediul lexical și se returnează un nou înveliș`function(b)`.
43
+
- Apoi, acest înveliș este apelat cu `2` ca argument, iar apelul este transmis către `sum` original.
44
44
45
-
Implementările mai avansate de currying, cum ar fi [_.curry](https://lodash.com/docs#curry) din biblioteca lodash, returnează un wrapper care permite ca o funcție să fie apelată atât în mod normal, cât și parțial:
45
+
Implementările mai avansate de currying, cum ar fi [_.curry](https://lodash.com/docs#curry) din biblioteca lodash, returnează un înveliș care permite ca o funcție să fie apelată atât în mod normal, cât și parțial:
46
46
47
47
```js run
48
48
functionsum(a, b) {
@@ -109,11 +109,11 @@ Deci:
109
109
1. Nu am pierdut nimic după curry: `log` este încă apelabil în mod normal.
110
110
2. Putem genera cu ușurință funcții parțiale, cum ar fi pentru logurile de astăzi.
111
111
112
-
## Advanced curry implementation
112
+
## Implementarea curry avansată
113
113
114
-
In case you'd like to get in to the details, here's the "advanced" curry implementation for multi-argument functions that we could use above.
114
+
În cazul în care doriți să intrați în detalii, iată implementarea curry "avansată" pentru funcții cu argumente multiple pe care am putea-o folosi mai sus.
115
115
116
-
It's pretty short:
116
+
Este destul de scurtă:
117
117
118
118
```js
119
119
functioncurry(func) {
@@ -131,7 +131,7 @@ function curry(func) {
131
131
}
132
132
```
133
133
134
-
Usage examples:
134
+
Exemple de utilizare:
135
135
136
136
```js
137
137
functionsum(a, b, c) {
@@ -140,17 +140,17 @@ function sum(a, b, c) {
140
140
141
141
let curriedSum =curry(sum);
142
142
143
-
alert( curriedSum(1, 2, 3) ); // 6, still callable normally
144
-
alert( curriedSum(1)(2,3) ); // 6, currying of 1st arg
145
-
alert( curriedSum(1)(2)(3) ); // 6, full currying
143
+
alert( curriedSum(1, 2, 3) ); // 6, încă apelabil în mod normal
144
+
alert( curriedSum(1)(2,3) ); // 6, curry de la primul argument
145
+
alert( curriedSum(1)(2)(3) ); // 6, currying complet
146
146
```
147
147
148
-
The new `curry`may look complicated, but it's actually easy to understand.
148
+
Noul `curry`poate părea complicat, dar este de fapt ușor de înțeles.
149
149
150
-
The result of `curry(func)`call is the wrapper `curried`that looks like this:
150
+
Rezultatul apelului `curry(func)`este învelișul `curried`care arată astfel:
151
151
152
152
```js
153
-
// func is the function to transform
153
+
// func este funcția de transformat
154
154
functioncurried(...args) {
155
155
if (args.length>=func.length) { // (1)
156
156
returnfunc.apply(this, args);
@@ -162,23 +162,23 @@ function curried(...args) {
162
162
};
163
163
```
164
164
165
-
When we run it, there are two `if` execution branches:
165
+
Când îl rulăm, există două ramuri de execuție `if`:
166
166
167
-
1.If passed `args`count is the same or more than the original function has in its definition (`func.length`) , then just pass the call to it using `func.apply`.
168
-
2.Otherwise, get a partial: we don't call `func`just yet. Instead, another wrapper is returned, that will re-apply `curried`providing previous arguments together with the new ones.
167
+
1.Dacă numărul de `args`transmis este același sau mai mare decât numărul de funcții originale din definiția sa (`func.length`) , atunci doar transmite apelul la aceasta folosind `func.apply`.
168
+
2.În caz contrar, obține o parțială: nu apelăm `func`deocamdată. În schimb, este returnat un alt înveliș, care va aplica din nou `curried`furnizând argumentele anterioare împreună cu cele noi.
169
169
170
-
Then, if we call it, again, we'll get either a new partial (if not enough arguments) or, finally, the result.
170
+
Apoi, dacă îl apelăm, din nou, vom obține fie un nou parțial (dacă nu sunt suficiente argumente), fie, în final, rezultatul.
171
171
172
-
```smart header="Fixed-length functions only"
173
-
The currying requires the function to have a fixed number of arguments.
172
+
```smart header="Numai funcții cu lungime fixă"
173
+
Currying necesită ca funcția să aibă un număr fix de argumente.
174
174
175
-
A function that uses rest parameters, such as `f(...args)`, can't be curried this way.
175
+
O funcție care utilizează parametri rest, cum ar fi `f(...args)`, nu poate fi curryată în acest mod.
176
176
```
177
177
178
-
```smart header="A little more than currying"
179
-
By definition, currying should convert `sum(a, b, c)` into `sum(a)(b)(c)`.
178
+
```smart header="Un pic mai mult decât currying"
179
+
Prin definiție, currying ar trebui să convertească `sum(a, b, c)` în `sum(a)(b)(c)`.
180
180
181
-
But most implementations of currying in JavaScript are advanced, as described: they also keep the function callable in the multi-argument variant.
181
+
Dar majoritatea implementărilor de currying în JavaScript sunt avansate, așa cum este descris: ele de asemenea păstrează funcția apelabilă și în varianta cu mai multe argumente.
0 commit comments