如何解决重用匿名记录值的最佳语法
f
是一个返回(匿名)记录的函数,例如:
let f a b c =
{| X = a + b; Y = c; Z = 1|}
根据元素的当前值更改元素而不先将其分配给另一个绑定的语法是什么?
let x1 = {| f a b c with Y = Y + 12 |}
// ^ The value or constructor 'Y' is not defined.
尤其是在更复杂的情况下,例如:
let x2 = if a + b < c
then {| X = a; Y = c + b; Z = 1 |}
else {| f a b c with Y = Y + 12 |}
// ^ The value or constructor 'Y' is not defined.
我希望看到类似别名的内容。 这样的东西存在吗?
let x2 = if a + b < c
then {| X = a; Y = c + b; Z = 1 |}
else {| (f a b c) as y with Y = y.Y + 12 |}
// ^^^^ ^^
解决方法
您所建议的确切语法不存在,但这正是let
的作用:
let x2 = if a + b < c
then {| X = a; Y = c + b; Z = 1 |}
else let y = f a b c in {| y with Y = y.Y + 12 |}
在您的问题中,您说“ ,而没有将其分配给另一个绑定”,但是您的最后一个示例只是这样做:它将f a b c
绑定到y
(这就是为什么正是let
所做的事情。
这使我认为,“另一种绑定”是指比绑定更具体的内容。也许,如果您弄清了什么,更重要的是,为什么它对您不起作用,我们可能会提出更好的解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。