¿Por qué la diferencia del argumento marcado / no marcado resulta diferente de retorno?

votos
0

Empecé a Razón (OCaml) el aprendizaje y no entiendo la cosa titulado. ¿Por qué funcionan los rendimientos segunda parte, pero no calculó el valor? Pensé que sólo una manera de pasar difiere de argumentos y un resultado no lo hace.

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

Publicado el 14/02/2020 a las 00:00
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
3

Se requiere tener al menos un parámetro posicional cuando hay argumentos marcados opcionales (o como en su caso, los argumentos con un parámetro predeterminado). De lo contrario Espera Razón de usted que desea utilizar la función aplicado parcialmente.

Para garantizar la plena aplicación, utilice una unidad ()tanto en la declaración de la función y la invocación de la función para indicar al compilador que desea omitir el ~xparámetro.

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

Respondida el 14/02/2020 a las 00:33
fuente por usuario

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