F# 如何使用编译器推断静态成员的类型?

F# 如何使用编译器推断静态成员的类型?,f#,F#,如何使用编译器推断静态成员的类型 在C 6.0中,编译器可以通过提供using static来推断静态属性或方法的类型。指令 因此,我希望编写尽可能少的代码 我有以下静态成员: 然后我定义了一些类型和函数: 然后我进行以下测试: 我必须明确指定静态成员的类型吗?正如Fyodor Soikin所指出的,显而易见的解决方案是简单地将概要文件作为一个模块 module Profile = let someUserName = "some_user_name" let somePassw

如何使用编译器推断静态成员的类型

在C 6.0中,编译器可以通过提供using static来推断静态属性或方法的类型。指令

因此,我希望编写尽可能少的代码

我有以下静态成员:

然后我定义了一些类型和函数:

然后我进行以下测试:


我必须明确指定静态成员的类型吗?

正如Fyodor Soikin所指出的,显而易见的解决方案是简单地将概要文件作为一个模块

module Profile =
    let someUserName = "some_user_name"
    let somePassword = "some_password"
然后你可以:

open Profile

let credentials = { 
    User = User someUserName;
    Password = Password somePassword 
    }

顺便说一句,虽然目前可能无法在F中打开静态类,但在未来的版本中,这一点似乎会发生变化——这一特性已在原则上得到批准。更多信息请参见。

正如Fyodor Soikin指出的,显而易见的解决方案是简单地将概要文件制作成一个模块

module Profile =
    let someUserName = "some_user_name"
    let somePassword = "some_password"
然后你可以:

open Profile

let credentials = { 
    User = User someUserName;
    Password = Password somePassword 
    }

顺便说一句,虽然目前可能无法在F中打开静态类,但在未来的版本中,这一点似乎会发生变化——这一特性已在原则上得到批准。有关更多信息,请参阅。

将配置文件设置为模块,而不是静态类型。另外,您误用了“推断类型”一词。感谢您指出这一点。我应该如何表达它?推断类型意味着根据上下文和/或用法知道某事物的类型。这不适用于您的问题:编译器完全能够根据您从属性返回的值推断属性的类型为字符串。你们真正想要的是,我会把这些属性纳入范围。另外,从你的问题来看,我认为你缺乏系统的方法。你似乎试图在黑暗中四处走动,而没有花时间去了解什么是什么以及它应该如何工作。谢谢你的反馈。我会继续问问题,即使他们看起来很傻。顺便说一下,你没有义务回答他们。不过,我非常感谢在这里收到的所有指导。让概要文件成为一个模块,而不是静态类型。另外,您误用了“推断类型”一词。感谢您指出这一点。我应该如何表达它?推断类型意味着根据上下文和/或用法知道某事物的类型。这不适用于您的问题:编译器完全能够根据您从属性返回的值推断属性的类型为字符串。你们真正想要的是,我会把这些属性纳入范围。另外,从你的问题来看,我认为你缺乏系统的方法。你似乎试图在黑暗中四处走动,而没有花时间去了解什么是什么以及它应该如何工作。谢谢你的反馈。我会继续问问题,即使他们看起来很傻。顺便说一下,你没有义务回答他们。不过,我非常感谢大家对我的指导。
module Profile =
    let someUserName = "some_user_name"
    let somePassword = "some_password"
open Profile

let credentials = { 
    User = User someUserName;
    Password = Password somePassword 
    }