在 F# 中调用多行命名参数的方法

Aym*_*the 4 f# c#-to-f#

我有一些 F# 代码,它调用用 C# 编写的带有大量参数的方法。

为了使事情清晰易读,我在调用方法时使用命名参数:

let request = Models.UserService.CreateUserRequest(
    email = "email@example.com",
    password = "password",
    title = "title",
    firstname = "firstname",
    lastname = "lastname",
    nickname = "nickname",
    locale = "locale",
    birthDate = "birthdate",
    currency = "USD",
    ipAddress = "127.0.0.1",
    address = address,
    mobilePhone = "+1 123 456 7890"
)
Run Code Online (Sandbox Code Playgroud)

但是我收到有关缩进的警告:

warning FS0058: Possible incorrect indentation: this token is offside of context started at position (30:19). Try indenting this token further or using standard formatting conventions.
Run Code Online (Sandbox Code Playgroud)

显然,如果我不使用命名参数或将所有内容放在一行中,警告就会消失。但我想以一种清晰易读的方式格式化它。

有没有办法在 F# 中格式化多行方法调用而不发出警告?

kae*_*fer 5

轻量级语法的正式描述包含在F# 语言规范中,您所追求的特定功能称为 Offside Context。这将允许您减少最后一个上下文的列以及一个或多个附加列的缩进。越位上下文将在上下文=中的赋值Let之后以及上下文中的左括号之后立即遇到Paren

实际上,你可以有这样的缩进:

let request =
    Models.UserService.CreateUserRequest(
        email = "email@example.com",
        password = "password",
        ... )
Run Code Online (Sandbox Code Playgroud)