小编Tho*_*mas的帖子

对 F# 中的字段及其访问规则以及初始化非常困惑

让我们上这堂课:

type Test() =

    let mutable Flag1 : bool = false
    [<DefaultValue>] val mutable Flag2 : bool

    do
        Flag1 <- true  // that works
        Flag2 <- true  // nope... why?

    member this.SetFlag =
        Flag1 <- true  // no 'this' instance? does that mean it's static?
        this.Flag2 <- true  // that works now, but still no way to set a default value
Run Code Online (Sandbox Code Playgroud)

[<DefaultValue>]当我希望能够将值设置为我自己的任何值时,为什么我需要?

然后现在:

type Test2() =
    Inherit(Test)

    do
        Flag1 <- true  // not accessible
        Flag2 <- true  // not …
Run Code Online (Sandbox Code Playgroud)

f#

5
推荐指数
1
解决办法
91
查看次数

如何使用嵌套的“if”语句减少代码重复?

让我们考虑一下这段代码:

let getBuildDate (assembly: Assembly) : DateTime option =

    let buildVersionMetadataPrefix = "+build"
    let attribute = assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>()

    if attribute <> null && attribute.InformationalVersion <> null then
        let value = attribute.InformationalVersion
        let index = value.IndexOf(buildVersionMetadataPrefix)
        if index > 0 then
            let value = value.Substring(index + buildVersionMetadataPrefix.Length)
            let success, timestamp = DateTime.TryParseExact(value, "yyyyMMddHHmmss", CultureInfo.InvariantCulture, DateTimeStyles.None)
            if success then
                Some timestamp
            else
                None
        else
            None
    else
        None
Run Code Online (Sandbox Code Playgroud)

有没有办法摆脱所有的“else None”语句而只有一个?

一方面,我可以想象,对于某些人来说,代码更清晰,所有 None 语句都拼出来了,但另一方面,来自 C 世界,我认为它是混乱的,降低了可读性。

在很多情况下,您需要满足一系列条件,并且所有失败的案例都集中在一个地方。

如果我有一个依赖于彼此成功的条件列表,我怎样才能做到简洁的短退出而不重复。

f#

5
推荐指数
2
解决办法
423
查看次数

什么是“和!” 在 F# 中使用 FsToolkit.ErrorHandling 的验证计算表达式中

使用 FsToolkit.ErrorHandling 并查看此示例时:

testCase "Happy Path Result" <| fun () ->
        let actual : Validation<int, string> = validation {
            let! a = Ok 3
            and! b = Ok 2
            and! c = Ok 1
            return a + b - c
        }
Run Code Online (Sandbox Code Playgroud)

和是什么意思?看起来就像让!被映射到 Result.bind,但我没有看到let! 之间有不同的行为!

据我所知,它看起来像是替换并且!让!保持相同的行为。

我刚刚开始涉足计算表达式,事情开始有意义,尽管我不太明白为什么 F# 关键字(如 let )和实际函数(如 bind)之间有不同的命名法,因此它增加了一层混乱。所以这个问题的答案可能是显而易见的:)

f# computation-expression

5
推荐指数
1
解决办法
333
查看次数

IIS 10:Windows 10 与 Windows Server 2016,连接数

当我在网络上寻找有关 IIS 的任何信息时,我发现了大量关于 IIS 7 和 8 的链接,但几乎没有关于 IIS 10 的链接,以至于我什至怀疑它是否存在,即使我正在运行它。

There are many posts about connection limits in the non server editions of windows; absolutely nothing regarding windows 10.

My question is: Is there a limit to the number of simultaneous connections in Windows10/IIS 10 (so we should get Windows Server 2016)?

windows iis windows-server

4
推荐指数
1
解决办法
5531
查看次数

DateTime + TZ - > NodaTime转换

当我看看如何将时间转换为NodaTime时,我发现很多帖子,但没有直接回答我需要什么.

我有:

- A DateTime object (DateTime myDateTime)
- An Olson timezone (var TZ = "America/Los_Angeles")
Run Code Online (Sandbox Code Playgroud)

我想要:

- A ZonedDateTime object (ZonedDateTime myZonedDateTime)
Run Code Online (Sandbox Code Playgroud)

理想情况下,我正在寻找一些帮助:

var myZonedDateTime = ZonedDateTime.From(myDateTime, TZ);
Run Code Online (Sandbox Code Playgroud)

但我看到的所有样本都将日期转换为字符串然后解析字符串,这看起来很奇怪.

有一个ZonedDateTime.FromDateTimeOffset()方法,但偏移量和TimeZone是不同的东西,因为TZ可以处理夏令时.

c# nodatime

4
推荐指数
1
解决办法
521
查看次数

如何使用 NEST 与 ElasticSearch 进行 guid 匹配

我有 ES 文档,其中一个字段是一个 guid。

\n\n

当我尝试进行匹配时,破折号会严重破坏我的搜索,并且我会得到一堆不相关的部分匹配项。

\n\n

由于该字段是一个 guid,因此它始终需要精确匹配。

\n\n

在 Kibana 中,我可以将 guid 用引号引起来,并且得到精确匹配;对于 NEST,引号 don\xe2\x80\x99t 没有帮助。我也尝试过逃避破折号,但没有成功。

\n\n

我需要按原样存储 guid,因为在某些情况下我必须检索完整的 guid 文档,因此我可以\xe2\x80\x99t 删除其中的破折号。

\n\n

有没有办法用 NEST 标记该字段,以便当我查询时只返回完全匹配的内容?

\n\n
\n\n

编辑:\n根据下面的答案,这就是我所做的:

\n\n
    \n
  • 我将 [Nest.Keyword] 添加到 guid 字段

  • \n
  • 我这样查询:

    \n\n
    var R = await _ElasticClient.SearchAsync<PictureObject>(Sr => Sr\n    .Query(Q => Q.Term(Te => Te\n    .Field(F => F.AlbumId)   <- the guid field\n    .Value(IdString));  <- my value\n
    Run Code Online (Sandbox Code Playgroud)
  • \n
\n\n

但这不会返回任何内容。

\n\n

弹性站点的文档给出了一个示例(https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/terms-query-usage.html):

\n\n
q\n.Terms(c => c\n.Name("named_query")\n.Boost(1.1)\n.Field(p => p.Description)\n.Terms("term1", "term2")\n)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我找不到任何有关 …

elasticsearch nest

4
推荐指数
1
解决办法
3884
查看次数

在 F# 中,sprintfn 去哪儿了?

sprintfn在 F#中有几页提到。

其中之一是经典之作:https : //fsharpforfunandprofit.com/posts/fsharp-in-60-seconds/

但也是在这里,在 Tomas 的回答中:“表达式问题”是否可以在 F# 中解决?

不过我好像不能用,好像没有定义。它是否从语言中删除?

f#

4
推荐指数
1
解决办法
105
查看次数

为什么在 F# 中将数组类型写成一个列表?

具有以下内容:

let a = "hello world".Split(' ')
Run Code Online (Sandbox Code Playgroud)

返回类型是一个字符串数组,但类型写为:

System.String[]

我不明白为什么:

  • 你声明一个数组,[| ... |]但它显示为[ ... ]类型
  • 您声明了一个列表,[ ... ]但它显示为x list类型

另一个例子:

([| 3 |]).GetType()
val it : System.Type =
  System.Int32[]
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

f#

4
推荐指数
1
解决办法
74
查看次数

我不明白 F# 中的这个映射元组键编译错误

这是一个函数:

let newPositions : PositionData list =
    positions
    |> List.filter (fun x ->
        let key = (x.Instrument, x.Side)
        match brain.Positions.TryGetValue key with
        | false, _ ->
             // if we don't know the position, it's new
            true
        | true, p when x.UpdateTime > p.UpdateTime ->
             // it's newer than the version we have, it's new
            true
        | _ ->
            false
    )
Run Code Online (Sandbox Code Playgroud)

它按预期编译。

让我们关注两行:

let key = (x.Instrument, x.Side)
match brain.Positions.TryGetValue key with
Run Code Online (Sandbox Code Playgroud)

Brain.Positions是 Map<Instrument * Side, PositionData> 类型

如果我将第二行修改为:

match …
Run Code Online (Sandbox Code Playgroud)

f# tuples

4
推荐指数
1
解决办法
214
查看次数

使用MongoDB C#查找和修改

我想替换以下代码:

var R = Challenges.FindAll().SetSortOrder("UseCount").First();
var Q = Query.EQ("_id", R._id);
var U = Update.Inc("UseCount", 1);
Challenges.Update(Q, U);
return R;
Run Code Online (Sandbox Code Playgroud)

这是意图:
我在一个名为'UseCount'的数据库中有一个字段,我想找到值较低的记录.如果许多记录具有相同的值,我只想要第一个(它并不重要).
同时,我希望将"UseCount"字段增加一个.

我已经看过FindAndModify的例子,但它似乎与字段比较(即:"field"= value),而不是像我正在做的搜索.

处理这个问题的最佳/最有效方法是什么?

c# sorting mongodb

3
推荐指数
1
解决办法
3140
查看次数