est-il possible d'appliquer partiellement une fonction telle que J'aimerais faire ce qui suit: p> < Pré> xxx pré> p> BPRINTF code> et l'empêchent d'être restreint en fonction de son utilisation initiale?
3 Réponses :
Vous pouvez ajouter explicitement format em> argument
Merci. Quelqu'un peut-il expliquer pourquoi cette application et cette application partielle ne le font pas?
Parce que dans .NET, les fonctions peuvent être génériques et les variables ne peuvent pas. laisser ajouter le format = code> décrit une fonction;
Laisser append = code> décrit une variable.
L'aspect de F # qui cause ceci est appelé restriction de valeur em>. Vous pouvez voir que si vous entrez uniquement les deux que code> déclarations sur f # interactives (de sorte que le compilateur ne déduit pas le type de la première utilisation):
let builder = new System.Text.StringBuilder()
let append<'T> : Printf.BuilderFormat<'T> -> 'T = Printf.bprintf builder
append "%i" 10
append "%s" "Hello"
Vous rencontrez la restriction de valeur F #. p>
Voici une bonne explication de certains contournements: compréhension des erreurs de restriction de valeur F # p>
Voici un article assez approfondi expliquant les raisons de la référence: Link P>