Có cách nào để có đối số chức năng có thể thay đổi trong F #, mà sẽ cho phép một cái gì đó giống nhưF # chức năng có thể thay đổi đối số
let mutable i = 9
let somefun n = n <- 12;()
somefun i
(* *not* a real-world example *)
Tôi hiểu rằng điều này có thể được thực hiện để làm việc bằng cách gói nó thành một loại bản ghi
type SomeRec = { mutable i: int }
let ri = { i = 9 }
let someotherfun r = r.i <- 12;()
và điều này có thể được thực hiện theo cách tương tự cho các thành viên của lớp học. Tuy nhiên, ngay cả sau khi duyệt qua toàn bộ Đặc tả Ngôn ngữ F # (vâng, tôi đã làm!), Dường như không có cú pháp nào để cho phép trường hợp đầu tiên, và trình biên dịch dường như không hài lòng về việc thử nó. Tôi đã hy vọng sẽ có một số loại chú thích, nhưng có thể biến đổi không thể được sử dụng trong đó. Tôi cũng biết rằng tôi không nên làm điều này ở nơi đầu tiên, nhưng trường hợp đầu tiên (int
ràng buộc) và thứ hai (loại record
) là giống hệt về mặt ngữ nghĩa, và bất kỳ phản đối như vậy sẽ giữ cho cả hai trường hợp như nhau.
Vì vậy, tôi nghĩ rằng tôi đang thiếu thứ gì đó ở đây.
Nếu bạn cần thay đổi thông số của mình, bạn vẫn đang suy nghĩ bất hợp pháp. Bạn có thể mô tả chính xác những gì bạn đang cố gắng làm, có lẽ ai đó có thể đề xuất một giải pháp thành ngữ hơn thay thế. – Juliet