De ce diferența de marcat argument / neetichetate rezultate diferite de retur?

voturi
0

Tocmai am început Motivul (OCaml) de învățare și eu nu înțeleg chestia cu denumirea. De ce a doua parte se întoarce, dar nu funcționează valoarea calculată? M-am gândit că doar o cale de trecere diferă argument și un rezultat nu.

let addWithoutLabel = (~x=10) => (y) => x + y;
let fifteen = addWithoutLabel(5);
Js.log(fifteen)
/* 15 */

let addWithLabel = (~x=10) => (~y) => x + y;
let sixteen = addWithLabel(~y=6);
Js.log(sixteen)
/* 
function sixteen(param) {
  return addWithLabel(param, 6);
}
*/

https://reasonml.github.io/en/try.html?rrjsx=true&reason=DYUwLgBAhgJjDqBLMALA9gVzAGSgIxGAgF4IAKAPwA9iBGABgEoSA+cgT2eLaogGoI7ANwAoUJABmiCWBAgAdiWhwkqTDnyEyAVkaiAUgGcAdMDQBzMlJlz5jEQHoAVBFraIThyLHhlCZCi4BESklDQMXGyUnKwQvALCPpCGiFSyCkqw-qhBWhTsxABseiJGphZkKWm29s4QIhIY8gDGYIhoilXp8mQADlAATlAAtswA3iIQEAPgGAOKWaqBmsB9gyMANBDFogC+Ip5AA

Întrebat 13/02/2020 la 22:00
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
3

Este necesar să aibă cel puțin un parametru pozițional atunci când există argumente opționale etichetate (sau ca în cazul dumneavoastră, argumentele cu un parametru implicit). În caz contrar, se așteaptă de la tine Motivul pe care doriți să utilizați funcția aplicată parțial.

Pentru a asigura aplicarea integrală, utilizează o unitate ()atât în declarația funcției și funcția de invocare a spune compilatorul pe care doriți să omiteți ~xparametrul.

let addWithoutLabel = (~x=10) => (y) => x + y;
let fifteen = addWithoutLabel(5);
Js.log(fifteen)
/* 15 */

let addWithLabel = (~x=10) => (~y, ()) => x + y;
let sixteen = addWithLabel(~y=6, ());
Js.log(sixteen)
/* 16 */

https://reasonml.github.io/en/try.html?rrjsx=true&reason=DYUwLgBAhgJjDqBLMALA9gVzAGSgIxGAgF4IAKAPwA9iBGABgBoIBPAShID4IqIBqVgG4AUKEgAzROLAgQAOxLQ4SVJhz5CZAKxsRAKQDOAOmBoA5mUnTZc3cID0AKgi0tER-eGjwShMhS4BESklDQMHMTclCzMZGwR3LwCLCJiEAaIVDLyirB+qIGaFCzEAGyx8frGphYZWTZ2Ti6l7p5AA

Publicat 13/02/2020 la 22:33
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more