Warum der Unterschied von markierten / nicht markierten Argument ergibt unterschiedliche Rückkehr?

stimmen
0

Ich habe gerade angefangen Grund Lernen (OCaml) und ich weiß nicht was die Titel Sache zu verstehen. Warum der zweite Teil zurückkehrt funktionieren, aber nicht Wert berechnet? Ich dachte, dass nur eine Art und Weise Argument unterscheidet sich von geben und das Ergebnis nicht.

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

Veröffentlicht am 13/02/2020 um 22:00
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
3

Es ist erforderlich, mindestens einen Positionsparameter zu haben, wenn es optional markierte Argumente sind (oder wie in Ihrem Fall, Argumente mit einem Standard-Parametern). Ansonsten Grund von Ihnen erwartet, dass Sie die teilweise angewandt Funktion verwenden.

Um die vollständige Anwendung zu gewährleisten, verwenden Sie ein Gerät ()sowohl in der Funktionsdeklaration und Funktionsaufruf , den Compiler zu sagen , dass Sie das weglassen wollen ~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

Beantwortet am 13/02/2020 um 22:33
quelle vom benutzer

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