gpt4 book ai didi

f# - 一个对象是否可以访问同一类的另一个对象的私有(private)字段/函数?

转载 作者:行者123 更新时间:2023-12-04 14:03:21 24 4
gpt4 key购买 nike

我知道这在 C# 中是可能的,它产生简单而高效的代码。 --- 同一类的两个对象可以访问彼此的私有(private)部分。

class c1
{
private int A;

public void test(c1 c)
{
c.A = 5;
}
}

但这在 F# 中似乎是不可能的,是真的吗?
type c1()
let A = 0
member test (c: c1) = c.A

最佳答案

有趣的问题。它似乎适用于显式字段,但不适用于 let 绑定(bind):

// Works
type c1 =
val private A : int
new(a) = { A = a }
member m.test(c : c1) = c.A

let someC1 = new c1(1)
let someMoreC1 = new c1(42);
let theAnswer = someC1.test someMoreC1

// Doesn't work
type c2() =
let mutable A = 42
// Compiler error: The field, constructor or member 'A' is not defined
member m.test(c : c2) = c.A

关于f# - 一个对象是否可以访问同一类的另一个对象的私有(private)字段/函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12405416/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com