Così ho avuto modo di registrare nel mio viaggio in F # e all'inizio sembrano piuttosto pericolosi. In un primo momento questo sembrava intelligente:Record F #: pericoloso, solo per uso limitato o funzionalità ben utilizzata?
type Card = { Name : string;
Phone : string;
Ok : bool }
let cardA = { Name = "Alf" ; Phone = "(206) 555-0157" ; Ok = false }
L'idea che la cartaA è il patten è stata abbinata a quella del cartoncino. Per non parlare del modello semplificato di corrispondenza qui:
let withTrueOk =
list
|> Seq.filter
(function
| { Ok = true} -> true
| _ -> false
)
Il problema è:
type Card = { Name : string;
Phone : string;
Ok : bool }
type CardTwo = { Name : string;
Phone : string;
Ok : bool }
let cardA = { Name = "Alf" ; Phone = "(206) 555-0157" ; Ok = false }
Carda è ora di tipo CardTwo che sto indovinando ha a che fare con F # in esecuzione tutto in ordine.
Ora questa potrebbe essere una situazione impossibile poiché potrebbe non esserci mai la possibilità che la stessa firma prenda due tipi, ma è una possibilità.
Sta registrando qualcosa che ha un uso limitato o sto solo pensando a questo?
Stai pensando troppo: dai ai tuoi elementi discografici nomi distinti o qualifica pienamente quale tipo di record intendi per abbinare/istanziare ad es 'let cardA = {Card.Name =" Alf "; Phone = "(206) 555-0157"; Ok = falso} '. – ildjarn
La mutabilità IMHO per impostazione predefinita, l'ereditarietà e la mancanza di uguaglianza strutturale rendono le classi più pericolose dei record, ma non si vedono molte persone lamentarsi di questo ;-) –
@MauricioScheffer Aggiungi a tale valore di default per impostazione predefinita. –