Skip to content

Latest commit

 

History

History
85 lines (66 loc) · 1.82 KB

language_optional_labeled_argument.mdx

File metadata and controls

85 lines (66 loc) · 1.82 KB
idkeywordsnamesummarycategory
optional-labeled-argument
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.

Example

<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");

References

close