gpt4 book ai didi

F# 非平凡非主构造函数

转载 作者:行者123 更新时间:2023-12-04 06:39:19 25 4
gpt4 key购买 nike

我想在调用主构造函数之前在非主构造函数中做一些工作,例如像这样:

type Foo(a:int,b:int) =
let a = a
let b = b
new(s:string) =
//...work here (intermediate let bindings)
let _a = ...
let _b = ...
Foo(_a,_b)

如果可能的话,我该如何实现这一点(现在我想到了这一点,我什至不确定这是否可以在 C# 中完成,但目标类似于如何在扩展类构造函数中随心所欲地调用基构造函数...但我不想做任何草图的事情,只是在推迟到主要构造函数之前稍微处理我的参数 - 或者也许我今天一直在看电脑屏幕)?

最佳答案

我不知道你做了什么,但这对我有用:

type Foo(a:int,b:int) =
let a = a
let b = b
new (s:string) =
printfn "some side effect"
let _a = s.Length
let _b = 1
Foo(_a,_b)

此外,如果您想在派生类型和插入前或插入后代码中调用基本构造函数,这里的语法仅供引用(注意大括号的位置):
type DFoo =
inherit Foo

new (a,b) =
printfn "perform some validation here"
let c = 0 // or bind stuff
{
inherit Foo(a,b)
}
new (s:string) =
{
inherit Foo(s)
}
then if s.Length = 0 then printfn "post ctor side effect"

关于F# 非平凡非主构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4466981/

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