F# - 没有参数的函数?

20 浏览
0 Comments

F# - 没有参数的函数?

当考虑采用函数式思维时,鉴于函数应该是纯粹的,我们可以得出一个结论:没有参数的函数基本上就是一个值。

然而,现实情况却让这个结论变得不可行,因为对于不同的输入,我可能不需要某个函数,如果这个函数的计算代价很高,我希望在不需要时不对其进行评估。

我找到了一个解决方法,使用let func _ = ...并用func 1或其他方式调用,但这感觉非常不习惯,并且会使读者感到困惑。

这归结为一个问题:在F#中,有没有一种适当的方式来声明一个没有参数的函数,而不需要在声明时对其进行评估?

admin 更改状态以发布 2023年5月24日
0
0 Comments

我认为你想要的是懒加载

let resource = 
    lazy(
        // expensive value init here
    )

之后当你需要读取这个值的时候...

resource.Value

如果你没有调用Value属性,那么在lazy块内的代码就不会被运行,但如果你调用了它,那么代码将不会超过一次被运行。

0
0 Comments

通常的做法是定义函数接收一个单位类型参数(let functionName() = 42),然后调用它的时候使用functionName ()。(单位类型只有一个值,即()。)

0