从F#中的同一个类的其他实例访问私有字段

时间:2014-01-05 03:18:22

标签: .net f#

在C#中,允许以下内容:

class A {
    private int i;

    public int lol(A a) {
        return a.i;
    }
}

是否有可能在F#中做类似的事情?如果有,怎么样?如果没有,那么解决方法是什么?

我目前的课程类似于:

type Point() =
  let mutable x = 0
  let mutable y = 0
  with
    member ...

由于

2 个答案:

答案 0 :(得分:3)

所以有几种不同的方法可以做到这一点

如果您只想要只读访问权限,则可以

type Point() =
  let mutable x = 0
  member __.X() = x

如果您不想隐藏变量,可以使用

member val X = 0 with get

答案 1 :(得分:2)

您可以使用val:

type A =
    val mutable private i: int

    new (n) = {i = n}

    member x.lol (a: A) = a.i


let objA1 = A(2)
let objA2 = A(5)

printfn "%d" <| objA2.lol(objA1)
printfn "%d" <| objA1.lol(objA2)