Hvorfor forskjellen av merket / umerket argument resulterer annerledes retur?

stemmer
0

Jeg har nettopp begynt å lære Reason (Objective Caml) og jeg forstår ikke tittelen ting. Hvorfor de andre delen avkastning fungere, men ikke beregnet verdi? Jeg trodde det bare en måte å passere argument er forskjellig, og et resultat som ikke virker.

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

Publisert på 14/02/2020 klokken 00:00
kilden bruker
På andre språk...                            


1 svar

stemmer
3

Det er nødvendig å ha minst en posisjonell parameter når det er valg merket argumenter (eller som i ditt tilfelle, argumenter med en standard parameter). Ellers Reason forventer av deg at du ønsker å bruke den delvis brukt funksjon.

For å sikre full søknad, kan du bruke en enhet ()i både funksjon erklæring og funksjon påkalling å fortelle kompilatoren at du ønsker å utelate ~xparameter.

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

Svarte 14/02/2020 kl. 00:33
kilden bruker

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