Czy istnieje sposób, aby mieć zmienny argumentów funkcji w F #, który pozwoliłby cośF # argumenty funkcji zmienny
let mutable i = 9
let somefun n = n <- 12;()
somefun i
(* *not* a real-world example *)
rozumiem, że to może być wykonane do pracy przez owinięcie go do typu rekordu
type SomeRec = { mutable i: int }
let ri = { i = 9 }
let someotherfun r = r.i <- 12;()
i że można to zrobić w podobny sposób dla członków klasy. Jednak nawet po przejrzeniu całej specyfikacji języka F # (tak, zrobiłem to!), Wydaje się, że nie ma żadnej składni, aby pozwolić na pierwszy przypadek, a kompilator wydaje się być niezadowolony z tego, że próbuję to zrobić. Miałem nadzieję, że będzie jakaś adnotacja typu, ale zmienna nie może być w tym użyta.
wiem też, że nie należy robić tego typu rzeczy w pierwszej kolejności, ale to pierwszy przypadek (int
wiążący) i drugi (record
typ) są semantycznie identyczne, a każdy taki sprzeciw będzie posiadać na obu przypadkach na równi.
Więc myślę, że czegoś tu brakuje.
Jeśli chcesz zmutować swoje parametry, nadal myślisz koniecznie. Czy możesz opisać dokładnie to, co próbujesz zrobić, może ktoś zaproponuje bardziej idiomatyczne rozwiązanie. – Juliet