gpt4 book ai didi

f# - 使用 F# 的 `ref` 与 `mutable` 赋值运算符

转载 作者:行者123 更新时间:2023-12-03 18:24:28 25 4
gpt4 key购买 nike

考虑以下代码:

let mutable a = 0.
let b = ref 0.

a <- // works
printfn "%A" a
4. + 8.

b := // does not work
printfn "%A" a
4. + 8.

b := ( // works
printfn "%A" a
4. + 8. )

为什么引用赋值运算符 (:=) 的行为与可变赋值运算符 (<-) 不同?

最佳答案

我只能给出部分答案。

:=根据 <- 定义在 FSharp.Core\prim-types.fs 中:

let (:=) x y = x.contents <- y

在你的例子中

b := // does not work
printfn "%A" a
4. + 8.

printfn "%A" a似乎被解释为 y ,不能分配给 int ref 单元格(错误类型)。通过将整个表达式与 ( ... ) 分组, y现在还包含 4. + 8. .也许这两个运算符(operator)的行为不同,因为 <-似乎是一个内在运算符(即语言的一部分,而不是库)。

关于f# - 使用 F# 的 `ref` 与 `mutable` 赋值运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7804308/

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