首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >F# FSI,更改工作目录

F# FSI,更改工作目录
EN

Stack Overflow用户
提问于 2017-09-20 09:52:09
回答 1查看 1.7K关注 0票数 3

下面的文件位于桌面的“新文件夹”中:

代码语言:javascript
复制
// File location: "C:\Users\my_user_name\Desktop\New folder\AddOne.fs"
// 
module internal AddOneModule

let AddOneFunction x = x + 1

我可以使用FSI F#互动在完整路径名上使用#load来访问这个文件。

代码语言:javascript
复制
Microsoft (R) F# Interactive version 4.1
Copyright (c) Microsoft Corporation. All Rights Reserved.

For help type #help;;

> #load "C:\Users\my_user_name\Desktop\New folder\AddOne.fs";;
//[Loading C:\Users\my_user_name\Desktop\New folder\AddOne.fs]
//namespace FSI_0002
//  val AddOneFunction : x:int -> int

> open AddOneModule;;
> AddOneFunction 100;;
//  val it : int = 101

如何更改工作目录,以便可以使用相对路径访问文件?

F# interactive:how to display/change current working directory

我尝试了类似于上面的帖子,但是FSI仍然试图在Temp文件夹中找到这个文件:

(重置FSI)

代码语言:javascript
复制
Microsoft (R) F# Interactive version 4.1
Copyright (c) Microsoft Corporation. All Rights Reserved.

For help type #help;;

> open System;;
> Environment.CurrentDirectory <- @"C:\Users\my_user_name\Desktop\New folder";;
//val it : unit = ()

> #load "AddOne.fs";;

//  #load "AddOne.fs";;
//  ^^^^^^^^^^^^^^^^^

//C:\Users\my_user_name\Desktop\New folder\stdin(3,1): error FS0078: Unable to find 
//the file 'AddOne.fs' in any of
// C:\Users\my_user_name\AppData\Local\Temp

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2017-09-20 13:05:18

而不是改变工作目录,您可以通过使用 built-in identifier实现所需的技巧。

首先,您需要目录结构中的某个锚点。为了说明起见,让我们假设您在Windows上,并让这个锚点成为您的用户目录,该目录由%USERPROFILE%环境变量定义。放置一个脚本anchorfsi.fsx,其中包含以下一行代码:

#I __SOURCE_DIRECTORY__

基本上这就是你要做的。现在,无论从哪个位置使用命令行fsi拍摄fsi --load:%USERPROFILE%\anchorfsi.fsx,您都可以在脚本和交互命令中使用相对路径。

关于加载.\desktop\new folder\addone.fs的问题中的设置,下面的屏幕截图演示了实现所需的目标:

注意输入的相对路径".\desktop\new folder\addone.fs"是如何正确地映射到绝对路径C:\Users\gene\desktop\new folder\addone.fs的,而不依赖于fsi工作目录。

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

https://stackoverflow.com/questions/46318803

复制
相关文章

相似问题

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