繁体   English   中英

什么是C#命名参数的F#等价物?

[英]What is the F# equivalent of C# named arguments?

在我看的DotNetYaml示例代码中,有一个C#构造:

var deserializer = new Deserializer(namingConvention: new CamelCaseNamingConvention());
var order = deserializer.Deserialize<Order>(input);

什么是等效的F#代码? 我试过了

let deserializer = new Deserializer(namingConvention=new CamelCaseNamingConvention())
deserializer.Deserialize<Meta>(input)

如果您有一个定义可选参数的C#库,那么您可以使用您在问题中使用的语法。 为了快速显示这种情况,我将以下C#代码编译为库:

using System;

namespace Demo {
  public class MyClass {
    public static void Foo(int first, string second = "foo", string third = "bar") { }
  }
}

您可以引用它并从F#中使用它,如下所示:

open Demo
MyClass.Foo(1, third="hi")

我试图用YamlDotNet做到这一点,我想这是你正在使用的库,但我得到一个错误, Deserializer类没有namingConvention作为参数,所以我的猜测是你可能正在使用不同的版本你正在考虑的图书馆(或者,我猜你正在使用的库是错误的......)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM