typestar

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

  1. ~pool ~species liberan la llamada del orden de argumentos.
  2. ?(count = 1) da el defecto cuando quien llama calla.
  3. ?count:maybe_count pasa un option directo.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 4 de 4 en Funciones; paso 7 de 29 en Fundamentos del lenguaje.

← Anterior Siguiente →