Я пытаюсь определить тип оценки, который отслеживает изменения в его составляющих
(составляющими, сообщающими значения, которые его используют, и использованием некоторых пользовательских операторов присваивания), а затем на основе модуса (определенного с помощью оператора custon) обновляется по-разному.
Я относительно новичок в f # и имею две проблемы:
1) use1: если значение изменяется same = false, и поэтому я хочу вернуть ссылку на функцию и изменить то же самое на true, однако, похоже, я использую неверный синтаксис для match.
2) Я не могу избавиться от ощущения, что мой тип сложнее, чем должен быть.
Я пытаюсь определить тип оценки, который отслеживает изменения в его составляющих
(составляющими, сообщающими значения, которые его используют, и использованием некоторых пользовательских операторов присваивания)
а затем на основе модуса (определяется оператором custon) обновляется по-разному.
type valtype(x) as this =
let reference= ref x
let mutable value = x
member val same= true with get, set
member val uses=[] with get, set
member this.chang1= value<- !reference
member this.chang2= this.same<- false
member val changed= this.chang1
member this.use1= fun a->a
member val used=this.use1
//here the error appears
member this.use2= if this.same then this.same<-true value<- !reference else fun a->a
// match this.same with
// |false-> this.same<-true value<- !reference
// |true-> fun a->a
member this.Value
with get()= this.used value
and set(c)=value<-c
желаемое поведение:
псевдокод:
FUNC (х) = х + 3
var1 § = func (x), var2 $ = func (x), var3 & = func (x)
FUNC (х) = х
var1 (intern x), var2 (intern x + 2), var3 (intern x + 2)
Ausgabe func (1):
var1-> 1, var2 (изменить: intern x) -> 1, var3-> 4
var3.orderChange var3 (изменить: intern x)
Ausgabe func (1):
var3-> 1