F# 使用命名元组作为函数参数
F# use named tuple as function parameter
我在 F# 中有以下类型:
type CodeNameError(CodeNameCombination: (Code*Name)[]) =
member this.CodeNameCombinations = CodeNameCombination
有没有办法在 F# 中将 (Code*Name)[] 转换为命名元组数组?
在 c# 中,我会做类似的事情:
public CodeNameError((Code code, Name name)[] codeName)
{
CodeNameCombination = codeName
}
F# 的命名元组与 C# 的命名方式不同,但有几个替代方案。我的首选选项实际上是为 Code * Name
对定义一个新的记录类型。如果遇到需要命名的情况,记录是一个不错的选择,只需一行代码:
type NamedCode = { Name:Name; Code:Code }
type CodeNameError(codeNameCombination:NamedCode[]) =
member this.CodeNameCombinations = codeNameCombination
CodeNameError [| { Code = "1+1"; Name = "test" } |]
如果您不想定义类型(但我不确定您为什么不想这样做),您可以使用匿名记录:
type CodeNameError(CodeNameCombination: {| code:Code; name:Name |}[]) =
member this.CodeNameCombinations = CodeNameCombination
CodeNameError [| {| code = "1+1"; name = "test" |} |]
我在 F# 中有以下类型:
type CodeNameError(CodeNameCombination: (Code*Name)[]) =
member this.CodeNameCombinations = CodeNameCombination
有没有办法在 F# 中将 (Code*Name)[] 转换为命名元组数组? 在 c# 中,我会做类似的事情:
public CodeNameError((Code code, Name name)[] codeName)
{
CodeNameCombination = codeName
}
F# 的命名元组与 C# 的命名方式不同,但有几个替代方案。我的首选选项实际上是为 Code * Name
对定义一个新的记录类型。如果遇到需要命名的情况,记录是一个不错的选择,只需一行代码:
type NamedCode = { Name:Name; Code:Code }
type CodeNameError(codeNameCombination:NamedCode[]) =
member this.CodeNameCombinations = codeNameCombination
CodeNameError [| { Code = "1+1"; Name = "test" } |]
如果您不想定义类型(但我不确定您为什么不想这样做),您可以使用匿名记录:
type CodeNameError(CodeNameCombination: {| code:Code; name:Name |}[]) =
member this.CodeNameCombinations = CodeNameCombination
CodeNameError [| {| code = "1+1"; name = "test" |} |]