id | keywords | name | summary | category | |||
---|---|---|---|---|---|---|---|
optional-labeled-argument |
| ~arg=? | This is an `optional labeled argument`. | languageconstructs |
Labeled arguments, i.e. arguments that are prefixed with ~
, can be suffixed with =?
to denote that they are optional. Thus, they can be omitted when calling the function.
<CodeTab labels={["ReScript", "JS Output"]}>
letprint= (text, ~logLevel=?) => { switchlogLevel { | Some(#error) =>Console.error(text) | _=>Console.log(text) } } print("An info") print("An error", ~logLevel=#error)
functionprint(text,logLevel){if(logLevel==="error"){console.error(text);}else{console.log(text);}}print("An info",undefined);print("An error","error");
Optional labeled arguments can also hold a default value.
<CodeTab labels={["ReScript", "JS Output"]}>
letprint= (text, ~logLevel=#info) => { switchlogLevel { | #error=>Console.error(text) | #warn=>Console.warn(text) | #info=>Console.log(text) } } print("An info") print("A warning", ~logLevel=#warn)
functionprint(text,logLevelOpt){varlogLevel=logLevelOpt!==undefined ? logLevelOpt : "info";if(logLevel==="warn"){console.warn(text);}elseif(logLevel==="error"){console.error(text);}else{console.log(text);}}print("An info",undefined);print("A warning","warn");