小编Rob*_*131的帖子

在 F# 中用另一种记录类型扩展记录类型

我有两种记录类型:

type Employee = {
        Id:          string
        Name:        string
        Phone:       string
}
    
type AuditLog = {
    PerformedBy: string
    PerformedOn: string
}
Run Code Online (Sandbox Code Playgroud)

以下是记录类型的实例:

let emp = {
    Id = "123"
    Name = "Abc"
    Phone = "999"
}

let log = {
    PerformedBy = "234"
    PerformedOn = "1/1/1"
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以组合这两个实例的字段来创建新的记录/匿名记录类型,如下所示?

let combined = {
    Id = "123"
    Name = "Abc"
    Phone = "999"
    PerformedBy = "234"
    PerformedOn = "1/1/1"
}
Run Code Online (Sandbox Code Playgroud)

f# record

7
推荐指数
1
解决办法
693
查看次数

在 F# 中多次更新地图

假设我有一张地图M:Map<int, bool>(最初是空的)。这次我想更新。我有一个列表L = [1 .. 100],对于这个列表中的每个元素,我想将相应的值设置为Mfalse。所以像,[1 .. 100] |> List.map (fun x -> M.Add(x, false))。但是M.Add()每次都会返回一个新地图并且不会反映更新。如何以惯用的 F# 方式进行此更新?

f# dictionary

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

F# 逆向列表中的值限制问题

由于值限制问题,以下 F# 代码无法编译:

let x = List.rev []
Run Code Online (Sandbox Code Playgroud)

但这编译:

let x = List.rev [] in 3::x
Run Code Online (Sandbox Code Playgroud)

据我了解,编译器推断它x必须是类型int list,因此它无法编译。

以下内容无法编译:

let x = List.rev [] in (3::x, true::x)
Run Code Online (Sandbox Code Playgroud)

但这确实:

let x = ([]) in (3::x, true::x)
Run Code Online (Sandbox Code Playgroud)

为什么?

f#

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

Should I reuse the same error number in different stored procedures when throwing errors?

I'm using Giraffe framework to implement a web server in F#. The web server executes some stored procedures based on client requests. Errors are thrown inside stored procedures when the request cannot be processed and I'm catching the errors in Giraffe like this:

try
     // parse request ...
    // data access and execute stored procdeure ...
with
| :? System.Data.SqlClient.SqlException as e ->
     match e.Number with
    | 60000 ->
        return! (setStatusCode 400 >=> json e.Message) next ctx
Run Code Online (Sandbox Code Playgroud)

Let's say …

sql-server f# throw

0
推荐指数
1
解决办法
41
查看次数

标签 统计

f# ×4

dictionary ×1

record ×1

sql-server ×1

throw ×1