Gli identificatori di sottolineatura "Non mi interessa" sono usati in modo efficace come modelli jolly. La differenza con una variabile che sarebbe stata chiamata _
è che ogni occorrenza di _
rappresenta un identificatore diverso; di conseguenza: (1) non puoi fare riferimento allo stesso _
due volte e quindi (2) non viene emesso alcun avviso per mancanza di utilizzo di _
, mentre un altro nome come dummy
probabilmente genera un avviso per non essere mai usato .
Il simbolo non interessa è presente nelle lingue con pattern matching incorporato perché a volte vuoi solo abbinare un valore a una particolare struttura e il contenuto effettivo non è importante. Questo accade principalmente in F #, OCaml, Haskell e in particolare in Prolog, ma anche altre lingue potrebbero fornire questo.
Ecco un esempio semplicistico in OCaml:
let empty = function [] -> true | _ :: _ -> false;;
Qui sopra, vuoi solo abbinare liste vuote a liste non vuote. Hai due diversi pattern per dissociare entrambi i casi, ma il contenuto effettivo degli elenchi non vuoti non verrà utilizzato, quindi devi solo inserire caratteri di sottolineatura.
Vedi anche la sezione 2.4 Identificatori e operatori delle specifiche Haskell:
However, “_” all by itself is a reserved identifier, used as wild card in patterns.
Grazie a svick's commento , non devo cercare molto per citazione pertinente per f # :
Wildcard Pattern
The wildcard pattern is represented by the underscore (_) character
and matches any input, just like the variable pattern, except that the
input is discarded instead of assigned to a variable. The wildcard
pattern is often used within other patterns as a placeholder for
values that are not needed in the expression to the right of the ->
symbol. The wildcard pattern is also frequently used at the end of a
list of patterns to match any unmatched input.