Methods 制作一个函数来更改方法中的x,y值

Methods 制作一个函数来更改方法中的x,y值,methods,f#,Methods,F#,我对面向对象编程非常陌生。我必须制定一个方法,使我的无人机更接近它的目的地,但我似乎无法使它工作。我添加了我的代码,我尝试访问元组位置和目标中的第一个和第二个值。但是这段代码给了我错误,说位置和目的地是不可变的。我做错了什么 module Drones type Drone(x1:int, y1:int, x2:int, y2:int, spd:int) = let mutable position = (x1,y1) let mutable destination = (x2

我对面向对象编程非常陌生。我必须制定一个方法,使我的无人机更接近它的目的地,但我似乎无法使它工作。我添加了我的代码,我尝试访问元组位置和目标中的第一个和第二个值。但是这段代码给了我错误,说位置和目的地是不可变的。我做错了什么

module Drones 
type Drone(x1:int, y1:int, x2:int, y2:int, spd:int) =
    let mutable position = (x1,y1)
    let mutable destination = (x2,y2)
    let mutable speed = spd
    member x.fly (position,destination) =
        if fst destination - fst position > 0 then position <- (x1+1,y1)
        else if snd destination - snd position > 0 then position <- (x1,y1+1) ```

模块无人机
类型无人机(x1:int、y1:int、x2:int、y2:int、spd:int)=
设可变位置=(x1,y1)
设可变目标=(x2,y2)
让可变速度=spd
成员x.fly(位置、目的地)=
如果fst目的地-fst位置>0,则位置0,然后位置这应起作用:

module Drones 

type Drone(x1:int, y1:int, x2:int, y2:int, spd:int) =
    let mutable position = (x1,y1)
    let mutable destination = (x2,y2)
    let mutable speed = spd
    member x.fly pos dest =
        if fst dest - fst pos > 0 then position <- (x1+1,y1)
        else if snd dest - snd pos > 0 then position <- (x1,y1+1)

如果不是因为你已经熟悉函数式语言,我可以问你为什么要用函数式语言进行面向对象编程吗?直接的问题是,方法参数隐藏着对象字段,但不清楚你为什么要将它们作为参数传入。它们是否与对象字段相同?如果是这样的话,你可以去掉这些参数。我正在为uni的一个赋值做面向对象的编程。谢谢你,删除这些参数似乎可以消除错误。
type Drone(x1:int, y1:int, x2:int, y2:int, spd:int) =
    let mutable position = (x1,y1)
    let mutable destination = (x2,y2)
    let mutable speed = spd
    member x.fly () =
        if fst destination - fst position > 0 then position <- (x1+1,y1)
        else if snd destination - snd position > 0 then position <- (x1,y1+1)