【发布时间】:2019-03-07 12:54:37
【问题描述】:
我将 Cleanide 用于 Clean3.0 编程语言。
我要做的是实现一个函数,它接收系统中目录的名称,并返回该目录中所有文件的列表。
我不知道这样的函数的定义是否需要像File -> [string]或者别的什么,即使那个目录是一个文件也许这不是Clean的开发者的意思......
非常感谢!
【问题讨论】:
标签: clean-language
我将 Cleanide 用于 Clean3.0 编程语言。
我要做的是实现一个函数,它接收系统中目录的名称,并返回该目录中所有文件的列表。
我不知道这样的函数的定义是否需要像File -> [string]或者别的什么,即使那个目录是一个文件也许这不是Clean的开发者的意思......
非常感谢!
【问题讨论】:
标签: clean-language
此功能在 StdEnv 环境中不可用,但有两个库可以帮助解决此问题:
Directory 库包含一个模块 Directory,它有一个函数 getDirectoryContents :: !Path !*env -> (!(!DirError, [DirEntry]), !*env) | FileSystem env。
Platform 库包含一个模块 System.Directory,它有一个函数 readDirectory :: !FilePath !*w -> (!MaybeOSError [FilePath], !*w)。
在这两种情况下,第一个参数是目录路径,第二个参数是 *World,这是 Clean 执行不纯操作的典型方式(参见 chapter 9 的 the language report)。
有目录:
import Directory
Start w
# (dir,w) = getDirectoryContents (RelativePath []) w
= dir
有平台:
import System.Directory
Start w
# (dir,w) = readDirectory "." w
= dir
【讨论】:
"C:\Users\User\myDir"你能帮我吗?
"C:\\Users\\User\\myDir" 用于平台或AbsolutePath "C" [PathDown "Users",PathDown "User",PathDown "myDir"] 用于目录。