我有一个config.cfg文件,其中变量file_list是文件的相对路径列表
file_list = file1 dir1/file2 ../dir2/file3
如何读取此变量以获得file_list::[FilePath]
?尝试遵循Development.Shake.Config API Doc,但未成功。我需要一些东西来实现这一目标
file_list <- getConfig "file_list"
let fl = ??? file_list
need fl
ps。我是Haskell初学者
file_list
的类型为Maybe String
,并且fl
的类型必须为[FilePath]
,因此问题就变成了如何编写在两者之间转换的函数。一种选择是:
let fl = words (fromMaybe "" file_list)
fromMaybe
功能将Nothing
替换为""
-因此您现在有了String
。 words
函数在空格处分割字符串,以产生[String]
。在Haskell中,FilePath
是String
的同义词,所以都可以解决。
如果相反,如果您想丢失密钥,请执行以下操作:
Just file_list <- getConfig "file_list"
let fl = words file_list
need fl
[现在,您要在Maybe
中声明并展开file_list
,因此,如果是Nothing
,则会发生运行时崩溃,如果是Just
,则会在没有Just
包装器的情况下崩溃,因此可以简单地使用words
。