Argumentos etiquetados en OCaml
Las ~etiquetas nombran argumentos; los ?opcionales cargan defectos.
(* ~labels name arguments; ?optionals carry defaults. *)
let log_entry ~pool ~species ?(count = 1) () =
Printf.sprintf "%s: %d %s" pool count species
let () =
print_endline (log_entry ~pool:"north" ~species:"limpet" ~count:14 ());
(* Labels free the call site from argument order. *)
print_endline (log_entry ~species:"octopus" ~pool:"ledge" ());
(* Option.value pairs with ?opt when passing along. *)
let maybe_count = Some 7 in
print_endline
(log_entry ~pool:"cove" ~species:"anemone"
?count:maybe_count ())
Cómo funciona
~pool ~speciesliberan la llamada del orden de argumentos.?(count = 1)da el defecto cuando quien llama calla.?count:maybe_countpasa un option directo.
Palabras clave y builtins usados aquí
inlet
El intento, en números
- Líneas
- 13
- Caracteres a escribir
- 510
- Tokens
- 102
- Ritmo de tres estrellas
- 60 tpm
Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 102 segundos.
Paso 4 de 4 en Funciones; paso 7 de 29 en Fundamentos del lenguaje.