Linq F#无法在注释后推断类型参数
所以我有一些json响应内容表示为字符串,我想得到它的属性名 我在做什么Linq F#无法在注释后推断类型参数,linq,f#,Linq,F#,所以我有一些json响应内容表示为字符串,我想得到它的属性名 我在做什么 let properties = Newtonsoft.Json.Linq.JObject.Parse(responseContent).Properties() let propertyNames, (jprop: JProperty) = properties.Select(jprop => jprop.Name); 根据答案,我需要注释对扩展方法的调用,但是,我仍然得到了错误 在此程序点之前,无法根据类型
let properties = Newtonsoft.Json.Linq.JObject.Parse(responseContent).Properties()
let propertyNames, (jprop: JProperty) = properties.Select(jprop => jprop.Name);
根据答案,我需要注释对扩展方法的调用,但是,我仍然得到了错误
在此程序点之前,无法根据类型信息确定方法“Select”的唯一重载。可能需要类型注释。候选:(扩展名)Collections.Generic.IEnumerable.Select(选择器:Func):Collections.Generic.IEnumerable
我做错了什么吗?首先,您尝试使用的语法是lambda表达式的C#语法,而不是F#语法。在F#中,lambda表达式的正确语法是
funx->y
其次,语法let a,b=c
的意思是“解构对”。例如:
let pair = (42, "foo")
let a, b = pair // Here, a = 42 and b = "foo"
可以为一对元素提供类型注释:
let a, (b: string) = pair
但这对pair
的工作方式没有任何影响
为了为lambda表达式的参数提供类型注释,只需对参数进行注释,还有什么更简单的方法
fun (x: string) -> y
综上所述,您的产品线应该是这样的:
let propertyNames = properties.Select(fun (jprop: JProperty) -> jprop.Name)
(另外,请注意结尾没有分号。F#不需要分号)
如果你在基本语法方面遇到这种困难,我建议你在尝试实现一些复杂的东西之前,先通读F#的内容,并仔细阅读一些示例。首先,你尝试使用的语法是C#语法,而不是F#语法。在F#中,lambda表达式的正确语法是
funx->y
其次,语法let a,b=c
的意思是“解构对”。例如:
let pair = (42, "foo")
let a, b = pair // Here, a = 42 and b = "foo"
可以为一对元素提供类型注释:
let a, (b: string) = pair
但这对pair
的工作方式没有任何影响
为了为lambda表达式的参数提供类型注释,只需对参数进行注释,还有什么更简单的方法
fun (x: string) -> y
综上所述,您的产品线应该是这样的:
let propertyNames = properties.Select(fun (jprop: JProperty) -> jprop.Name)
(另外,请注意结尾没有分号。F#不需要分号)
如果你在基本语法方面遇到了这样的困难,我建议你在尝试实现复杂的东西之前,先通读F#的内容,并仔细阅读几个例子。是的,我刚刚意识到。谢谢你的解释我对F#world显然是新手是的,我刚刚意识到。谢谢你的解释,我对F#world显然是个新手