El siguiente tipo de extensiónerrores extensión de tipo de diccionario <'K, 'V>
module Dict =
open System.Collections.Generic
type Dictionary<'K, 'V> with
member this.Difference(that:Dictionary<'K, 'T>) =
let dict = Dictionary()
for KeyValue(k, v) in this do
if not (that.ContainsKey(k)) then
dict.Add(k, v)
dict
da el error:
The signature and implementation are not compatible because the declaration of the type parameter 'TKey' requires a constraint of the form 'TKey : equality
Pero cuando agrego la restricción que da el error:
The declared type parameters for this type extension do not match the declared type parameters on the original type 'Dictionary<,>'
Este es especialmente misterioso porque la siguiente extensión de tipo no tiene la restricción y wor Kansas.
type Dictionary<'K, 'V> with
member this.TryGet(key) =
match this.TryGetValue(key) with
| true, v -> Some v
| _ -> None
Ahora estoy teniendo pensamientos extraños: ¿la restricción es necesaria solo cuando se accede a ciertos miembros?
Nunca hubiera llegado a eso. ¿Por qué la inicialización del diccionario con el comparador elude la restricción de igualdad? – Daniel
Gracias, desco. Necesito estar despierto para leer algunas lecturas nocturnas. – Daniel
@Daniel, sospecho que leer las especificaciones a altas horas de la noche probablemente tendría el efecto opuesto a permanecer despierto, para mí de todos modos;) – Benjol