gpt4 book ai didi

f# - 在 F# 中从 C# 格式化流利/方法链接代码

转载 作者:行者123 更新时间:2023-12-05 01:24:34 27 4
gpt4 key购买 nike

一些像 Ninject 这样的 api 使用 fluent style api,例如:

Bind<ISomething>()
.To<Something>()
.WithConstructorArgument("arg1", "somevalue")
.OnActivation(x => x.DoSomething())

当我尝试在 F# 中像这样格式化代码时,编译器会提示方法调用之间的空格。

是否可以将方法调用放在单独的行上?我在想像流水线操作符 |> 之类的东西,但不完全确定在这种情况下如何。

这应该如何在 F# 中格式化?

最佳答案

你确定这不起作用吗?

Bind<ISomething>() 
.To<Something>()
.WithConstructorArgument("arg1", "somevalue")
.OnActivation(fun x -> x.DoSomething())

(注意 . 之前的一个空格)

是的,没关系:
type ISomething = interface end
type Something = class end

type Foo() =
member this.To<'a>() = this //'
member this.WithConstructorArgument(s1,s2) = this
member this.OnActivation(x:Foo->unit) = this
member this.DoSomething() = ()

let Bind<'a>() = new Foo() //'

let r =
Bind<ISomething>()
.To<Something>()
.WithConstructorArgument("arg1", "somevalue")
.OnActivation(fun x -> x.DoSomething())

只要在尝试将单个表达式继续到多行时有一些前导空格,就可以了。

(请注意,除非您有为它设计的带有 curried 方法参数的 API,否则流水线一般不会起作用。)

关于f# - 在 F# 中从 C# 格式化流利/方法链接代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4298626/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com