gpt4 book ai didi

f# - F# 中全局变量的样式指南

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

对于我正在处理的项目,我需要一个全局变量(技术上我不需要,我可以构建它,然后将它传递给每个函数调用,并让每个函数调用都知道它,但这似乎很hacky,可读性差,工作量大。)

全局变量是游戏的查找表(残局、开局和转置/缓存)。

事实上,一些代码可能会失去一些它的幂等行为实际上是要点(加速),是的,我知道全局可变状态是不好的,在这种情况下它真的很值得(10 倍以上的性能提升)

所以这里的问题是,“构建一个单例或在带有组合器的静态类中使用静态值”

它们实际上是相同的,但我很好奇人们以前在这类问题上做了什么

或者,我应该将这件事传递给每个人(或者至少是对它的引用),这真的是最好的答案吗?

最佳答案

这是一个类似于@Yin Zhu's 发布的解决方案,但使用抽象类型来指定可变值的使用接口(interface)、封装它的本地定义和提供实现的对象文字(这取自 Expert F#--由 Don Syme 合着):

type IPeekPoke =
abstract member Peek: unit -> int
abstract member Poke: int -> unit

let makeCounter initialState =
let state = ref initialState
{ new IPeekPoke with
member x.Poke(n) = state := !state + n
member x.Peek() = !state }

关于f# - F# 中全局变量的样式指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6040774/

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