gpt4 book ai didi

使用索引器的 F# 对象初始化

转载 作者:行者123 更新时间:2023-12-05 09:27:16 26 4
gpt4 key购买 nike

C# 允许对带有 Item 索引器的类使用以下对象初始化语法:

using System.Text.Json.Nodes;

namespace JsonNodeFromObjectExample;

...

// Create a new JsonObject using object initializers.
var forecastObject = new JsonObject
{
["Date"] = new DateTime(2019, 8, 1),
["Temperature"] = 25,
["Summary"] = "Hot",
["DatesAvailable"] = new JsonArray(new DateTime(2019, 8, 1),
new DateTime(2019, 8, 2)),
["TemperatureRanges"] = new JsonObject
{
["Cold"] = new JsonObject
{
["High"] = 20,
["Low"] = -10
}
},
["SummaryWords"] = new JsonArray("Cool", "Windy", "Humid")
};
...

在 F# 中我可以

let forecastObject = JsonObject()
forecastObject["Date"] <- DateTime(2019, 8, 1)
forecastObject["Temperature"] <- 25
...

但是需要反复写对象名,比较丑陋,不够简洁,也比较容易出错。

一种可能等效的语法是可用于属性初始化的语法:

let forecastObject = JsonObject(
["Date"] = DateTime(2019, 8, 1),
["Temperature"] = 25,
...
)

但是它不适用于像 Item() 这样的索引器。

有谁知道 F# 中是否有与 C# 中相同的语法?

最佳答案

F# 中没有等效的语法,但如果您愿意使用一些辅助方法,您可以这样做:

type JsonObject with
member this.Set(key : string, value) =
this[key] <- value
this

let forecastObject =
JsonObject()
.Set("Date", DateTime(2019, 8, 1))
.Set("Temperature", 25)
...

关于使用索引器的 F# 对象初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72709770/

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