小编gre*_*gyb的帖子

F#如何编写一个带有int列表或字符串列表的函数

我在F#中弄乱,试图编写一个可以带a int list或a 的函数string list。我编写了一个逻辑上通用的函数,其中我只能修改参数的类型,并且只能同时使用两种类型的列表。但是我不能一概而论地定义两者兼而有之。

这是我的函数,没有类型注释:

let contains5 xs =
    List.map int xs
    |> List.contains 5
Run Code Online (Sandbox Code Playgroud)

当我尝试对函数进行注释以采用通用列表时,会收到警告FS0064: the construct causes the code to be less generic than indicated by the type annotations。从理论上讲,我不需要对此进行注释即可,但是无论如何我还是尝试过。

我可以将其编译为两个单独的文件,其中一个

let stringtest = contains5 ["1";"2";"3";"4"]
Run Code Online (Sandbox Code Playgroud)

和另一个

let inttest = contains5 [1;2;3;4;5]
Run Code Online (Sandbox Code Playgroud)

在每个这些文件中,编译成功。或者,我可以将函数定义和测试之一发送给解释器,然后类型推断就可以了。如果我尝试编译或将函数定义以及这两个测试发送给解释器,则会收到error FS0001: This expression was expected to have type string, but here has type int

我是否误解打字应该如何工作?我有一个函数,其代码可以处理整数列表或字符串列表。我可以用任何一个成功地测试它。但是我不能在同时处理两者的程序中使用它吗?

f#

11
推荐指数
2
解决办法
237
查看次数

Django:合并迁移冲突的最佳方法

我目前在开发部门工作,有一天我需要将其合并。目前,我的dev分支上最多有20个迁移文件,而master上现在大约有相同数量。我需要在两个分支上进行迁移,这将导致迁移具有相同的前缀,

(例如0003_auto

换句话说,如果您makemigrations使用相同的前缀生成了迁移文件,那么最好的/安全的处理方法是什么。

这是我弄清楚自己的两种方法(可能完全错误):

  1. 删除所有迁移文件,将这些代码合并,然后运行一个新的makemigrationsmigrate这将导致只有一个迁移文件。

  2. 使用该--merge标志让django进行合并:

    makemigrations --merge
    
    Run Code Online (Sandbox Code Playgroud)

现在,了解了所有这些之后,我想知道什么是处理此问题的最佳方法。通常,应该使用哪种方法才能正确合并冲突,并在每次模型更新时为我提供新的项目版本。

编辑

我认为提供逐步解决方案对于我和将来的用户来说是理想的选择,因为存在关于该主题的大量信息,但似乎没有一个简洁明了。

python django django-migrations

8
推荐指数
2
解决办法
3141
查看次数

在 DAX 表达式中添加空格以在 PBI 卡中显示

我正在使用 Power BI 创建报告。我正在创建一张卡片,我必须在其中显示产品销售/目标销售。卡上正在显示以下度量。

Measure 2 = ROUND(sum('Sales by Category'[ProductSales]),0) & "  /  " & Round(sum('Sales by Category'[TargetSales]),0)
Run Code Online (Sandbox Code Playgroud)

我需要在斜线两边留一些间隙,即25000 / 30000. 但是即使我/在 DAX 表达式之前和之后给出多个空格,结果卡看起来也是这样。 25000 / 30000

的两侧仅显示一个空格/。有什么办法可以添加一个空格,比如 a'\t'或什么的?

dax powerbi

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

F#函数组成更改基本函数类型

我正在研究这个F#wikibook,我对链接页面的函数组合部分中看到的内容感到困惑.

我能想出的最简单的例子如下:

// int -> int
let f x = x + x
// float -> float
let g x = x + 1.0
Run Code Online (Sandbox Code Playgroud)

这可以.我很容易理解这些函数的类型,我可以在fsi中运行它们并确认它们采用并返回我在上面提到的类型的值.

如果我添加以下行,那么我看到变化我不太确定我理解.

// equivalent to f (g x)
let fog = f << g
Run Code Online (Sandbox Code Playgroud)

我理解这一点的方式,它应该不起作用,因为f期望一个int,但g返回一个浮点数.

如果我在fsi中定义这个组合,我会得到预期的类型错误.如果我将所有这些放在.fsx文件中并将整个内容发送到fsi,则f的签名将变为float - > float.

我对以下内容感到困惑:

  • 类型推断的范围发生了什么?
  • 在文件和fsi中定义这些有什么不同?

我尝试过搜索,但目前我还不太了解这些问题的答案.如果你能帮我指出解决这些问题的部分,我会很乐意接受RTFM.

f# types f#-interactive

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

标签 统计

f# ×2

dax ×1

django ×1

django-migrations ×1

f#-interactive ×1

powerbi ×1

python ×1

types ×1