我有:
type Id = Id of int
let mutable IdInt = 0
let idGenerator =
fun _ ->
IdInt <- IdInt + 1
IdInt |> Id
Run Code Online (Sandbox Code Playgroud)
然后被称为例如:
printfn "%A" (idGenerator())
Run Code Online (Sandbox Code Playgroud)
在 F# 中生成简单的增量 ID 的最佳实践是什么?
你的实现几乎就是我会做的。有两件事我会改变:
IdInt
变量保持在本地,idGenerator
以便将其隐藏(您也可以camelCase
为它使用更惯用的命名)所以,我稍微修改的版本是:
let idGenerator =
let mutable idInt = 0
fun () ->
idInt <- idInt + 1
idInt |> Id
Run Code Online (Sandbox Code Playgroud)
在某些情况下,将其设为创建新生成器的函数也很有用(如果您想要拥有更多本地生成器而不是一个全局生成器):
let makeIdGenerator () =
let mutable idInt = 0
fun () ->
idInt <- idInt + 1
idInt |> Id
let idGen1 = makeIdGenerator ()
let idGen2 = makeIdGenerator ()
Run Code Online (Sandbox Code Playgroud)
两个生成器会独立生成从 1 开始的 ID。它们是独立的,因为idInt
变量现在是本地的,所以它不会被两个生成器共享。
归档时间: |
|
查看次数: |
116 次 |
最近记录: |