'of' 关键字和字符串输出

'of' keyword and string output

我刚接触 F#,对某些语法和结果感到困惑。

我有这种类型:

type ApplicationId = ApplicationId of System.Guid

据我所知,哪个 atm 应该是 Guid 的某种别名。问题是当我这样做时

let application = ApplicationId(System.Guid.NewGuid())
System.Console.WriteLine(application.ToString())

它给我打印这个

ApplicationId 7902aa4a-b262-48d9-8d05-ad1e2ed5f7e2

而我只期待 Guid 值。这到底是什么构造,导致 of 上的语言参考中的 3 个条目似乎不是它。

如果您只想要 type alias 作为 System.Guid,那么试试这个:

type ApplicationId = System.Guid

let application : ApplicationId = System.Guid.NewGuid()
System.Console.WriteLine(application.ToString())

您的 ApplicationId 类型是包装 System.Guid 类型的 discriminated union,但不是它的别名。这就是为什么您的原始控制台输出表明您有一个包含在 ApplicationId.

中的 GUID 值