首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >F#交互脚本负载管理

F#交互脚本负载管理
EN

Stack Overflow用户
提问于 2022-03-16 16:32:35
回答 1查看 55关注 0票数 1

假设我有以下脚本:

C.fsx

代码语言:javascript
运行
复制
namespace FruitSalad

type Cherry =
  {
    Cherry : int
  }

B.fsx

代码语言:javascript
运行
复制
#load "./C.fsx"

namespace FruitSalad

type Banana =
  {
    Banana : int
    Cherry : Cherry
  }

A.fsx

代码语言:javascript
运行
复制
#load "B.fsx"
#load "C.fsx"

open FruitSalad

type Apple =
  {
    Apple : int
    Banana : Banana
    Cherry : Cherry
  }

let c =
  {
    Cherry = 3
  }

let a =
  {
    Apple = 1
    Banana =
      {
        Banana = 2
        Cherry = c
      }
    Cherry = c
  }

printfn "%A" a

运行A.fsx会产生以下错误:

error FS0001:该表达式应具有“FSI_0001.FruitSalad.Cherry”类型

但是这里有'FSI_0002.FruitSalad.Cherry‘类型

我可以通过从#load "C.fsx"中删除A.fsx来解决这个问题。

但是,对于大得多的脚本项目来说,维护这一点是很尴尬的。

F#是否支持类似“包含一次”的内容,这样就没有必要这样做了吗?

EN

回答 1

Stack Overflow用户

发布于 2022-03-16 21:14:43

我同意费奥多的评论,即有一个项目可能更容易。请注意,您可以创建一个包含大量*.fs文件的项目,但仍然有一个*.fsx文件来加载来自项目的所有文件。这样,IDE将从项目中读取信息(并且所有的自动完成都能工作),但是您也可以从脚本文件中运行所有的东西,脚本文件只需要以正确的顺序#load所有的*.fs文件。

如果您喜欢坚持使用脚本,另一个可能对您有帮助的选择是同时对多个文件使用#load。在上述情况下,您应该能够:

代码语言:javascript
运行
复制
#load "./B.fsx" "./C.fsx"

这样,F#交互式将知道您同时加载这两个文件,并且在加载B.fsx时不会创建单独的C.fsx版本。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71500874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档