我是编程新手,F#是我的第一语言。
以下是我的代码的相关部分:
let internal saveJsonToFile<'t> (someObject:'t) (filePath: string) =
use fileStream = new FileStream(filePath, FileMode.OpenOrCreate)
(new DataContractJsonSerializer(typeof<'t>)).WriteObject(fileStream, someObject)
let testList = new List<Fighter>()
saveJsonToFile testList<Fighter> @"G:\User\Fighters.json"
我之前创建了F#类型的F#记录。
当我尝试运行“saveJsonToFile testList @”G:\ User \ Fighters.json“”时,“testList”会以红色突出显示错误消息:“意外的类型参数”。
出了什么问题?我错过了什么?
答案 0 :(得分:1)
首先,您的testList
是值,而不是函数
其次,它没有通用的论证,其中的一切都是具体的。
如果您希望它是一个功能,请给它一个参数 如果你想要它是通用的,那就在体内说明。
let testList () = new List<'a>()
saveJsonToFile testList<Fighter>() @"G:\User\Fighters.json"
最后,您尝试创建的List
可能会解析为F#自己的List
,这是一个模块,而不是一个类型。
如果您打算创建.NET System.Collections.Generic.List
,那么您需要指定完整的类型名称:
let testList () = new System.Collections.Generic.List<'a>()
但是如果您打算创建一个F#本地列表,请使用其构造函数之一:
let testList () = []