gpt4 book ai didi

f# - 避免在程序集的两个部分中出现模块和类型定义的错误

转载 作者:行者123 更新时间:2023-12-03 23:02:11 28 4
gpt4 key购买 nike

假设我有一个这样的项目:

// Types.fs

namespace App

type Foo =
{
X : int
}
// Foo.fs

module App.Foo

let doubleIt (foo : Foo) =
{
X = foo.X * 2
}
然后我收到这样的错误:

Types.fs(3,6): error FS0250: A module and a type definition named 'Foo' occur in namespace 'App' in two parts of this assembly


但是,如果我将所有内容放在一个文件中,它就可以工作:
// Everything.fs

namespace App

type Foo =
{
X : int
}

module Foo =

let doubleIt (foo : Foo) =
{
X = foo.X * 2
}
但对我来说,这些似乎是一回事;而且我不想将所有内容组织成一个大文件。
  • 这里发生了什么?
  • 为什么我不能将模块放入另一个文件中?
  • 组织此代码的惯用方式是什么?

  • dotnet --version
    3.1.403

    最佳答案

    [FS0250] - 'ModuleSuffix' needs to be added explicitly
    因此,如果您想将类型和模块保存在单独的文件中,请使用

    [<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
    如果您将它们放在同一个文件中,则为您完成。

    关于f# - 避免在程序集的两个部分中出现模块和类型定义的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64929689/

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