Rol*_*lan 0 f# tuples c#-to-f#
我在 F# 中有以下类型:
type CodeNameError(CodeNameCombination: (Code*Name)[]) =
member this.CodeNameCombinations = CodeNameCombination
Run Code Online (Sandbox Code Playgroud)
有没有办法将 (Code*Name)[] 转换为 F# 中的命名元组数组?在 c# 中我会做类似的事情:
public CodeNameError((Code code, Name name)[] codeName)
{
CodeNameCombination = codeName
}
Run Code Online (Sandbox Code Playgroud)
F# 没有像 C# 那样具有命名元组,但有一些替代方案。我的首选选择实际上是为该对定义一个新的记录类型Code * Name。如果您遇到想要命名事物的情况,记录是一个不错的选择,并且需要 1 行代码:
type NamedCode = { Name:Name; Code:Code }
type CodeNameError(codeNameCombination:NamedCode[]) =
member this.CodeNameCombinations = codeNameCombination
CodeNameError [| { Code = "1+1"; Name = "test" } |]
Run Code Online (Sandbox Code Playgroud)
如果您不想定义类型(但我不确定您为什么不想这样做),您可以使用匿名记录:
type CodeNameError(CodeNameCombination: {| code:Code; name:Name |}[]) =
member this.CodeNameCombinations = CodeNameCombination
CodeNameError [| {| code = "1+1"; name = "test" |} |]
Run Code Online (Sandbox Code Playgroud)