ToArray 和 ToString return(单位 -> 字符串),不是字符串。我应该怎么办?
ToArray and ToString return (unit -> string), not string. What should I do?
备注
- Why a type method that should return a string returns a 'unit -> string' instead and how to solve it? 没有回答我的问题,因为它指的是输入错误,而我没有。
我目前遇到函数“ToString”返回 (unit -> string) 类型而不是字符串,以及“ToArray”返回 (unit -> string[]) 而不是 string[] 的问题.尝试向上转换为 string[] 或 string 没有成功。
代码如下:
let readZip filepath = ZipFile.OpenRead filepath
let replaceEnvs str = Environment.ExpandEnvironmentVariables str
let listFiles rawDir =
replaceEnvs rawDir
|> Directory.EnumerateFiles
let readModMetadata filepath =
let archive = readZip filepath
(archive.GetEntry "mcmod.info").ToString // Also becomes (unit -> string) and not string
[<EntryPoint>]
let main args =
let mods = listFiles modsFolder
let modAsArray = mods.ToArray // Becomes (unit -> string[]) and not string[]?
0
为什么会这样,有没有办法只获取字符串?
所以我发现了。
您需要指定没有参数进入函数。 ToString()
中的括号就是这样做的,因为它们区分返回函数和返回结果。
我需要更多咖啡。
备注
- Why a type method that should return a string returns a 'unit -> string' instead and how to solve it? 没有回答我的问题,因为它指的是输入错误,而我没有。
我目前遇到函数“ToString”返回 (unit -> string) 类型而不是字符串,以及“ToArray”返回 (unit -> string[]) 而不是 string[] 的问题.尝试向上转换为 string[] 或 string 没有成功。
代码如下:
let readZip filepath = ZipFile.OpenRead filepath
let replaceEnvs str = Environment.ExpandEnvironmentVariables str
let listFiles rawDir =
replaceEnvs rawDir
|> Directory.EnumerateFiles
let readModMetadata filepath =
let archive = readZip filepath
(archive.GetEntry "mcmod.info").ToString // Also becomes (unit -> string) and not string
[<EntryPoint>]
let main args =
let mods = listFiles modsFolder
let modAsArray = mods.ToArray // Becomes (unit -> string[]) and not string[]?
0
为什么会这样,有没有办法只获取字符串?
所以我发现了。
您需要指定没有参数进入函数。 ToString()
中的括号就是这样做的,因为它们区分返回函数和返回结果。
我需要更多咖啡。