Est-il possible d'avoir des arguments de la fonction mutables en F #, qui permettrait à quelque chose commeF # arguments de la fonction mutable
let mutable i = 9
let somefun n = n <- 12;()
somefun i
(* *not* a real-world example *)
Je comprends que cela peut être fait de travailler en l'enveloppant dans un type d'enregistrement
type SomeRec = { mutable i: int }
let ri = { i = 9 }
let someotherfun r = r.i <- 12;()
et que cela peut être fait de la même manière pour les membres de la classe. Cependant, même après avoir parcouru toute la spécification de langage F # (oui, je l'ai fait!), Il semble n'y avoir aucune syntaxe pour permettre le premier cas, et le compilateur semble être très mécontent de mon essai. J'espérais qu'il y aurait une sorte d'annotation de type, mais mutable ne peut pas être utilisé dans un tel. Je sais aussi que je ne devrais pas faire ce genre de chose en premier lieu, mais le premier cas (int
liaison) et le second (type record
) sont sémantiquement identiques, et une telle objection serait valable pour les deux cas également.
Alors je pense qu'il me manque quelque chose ici.
Si vous avez besoin de muter vos paramètres, vous pensez toujours impérativement. Pouvez-vous décrire exactement ce que vous essayez de faire, peut-être que quelqu'un peut suggérer une solution plus idiomatique à la place. – Juliet