缺少的方法应用程序应该用括号括起来
Missing method applications should be parenthesized
我读了 xml 文件,想比较属性值。
let xname name = XName.Get name
let xattr (elem: XElement) (name:string) = elem.Attribute(xname name).Value
let loc (filename:string) (location:string) =
query {
for doc in XDocument.Load(filename).Descendants(xname location) do
where (xattr doc "name").isEqual(location)
select doc
}
在线 where (xattr doc "name").isEqual(location)
编译器抱怨
Successive arguments should be separated by spaces or tupled, and arguments involving function or method applications should be parenthesized
我做错了什么?
好吧,编译器会准确地告诉您需要做什么。
在这种情况下,请遵循第二个提示:带括号的
重写表达式:
(xattr doc "name").isEqual(location)
作为
((xattr doc "name").isEqual(location))
你可能想知道他为什么要我这样做?原因是因为他不知道一个论点是只有一个论点还是有更多的论点。
例如考虑这个函数调用:
function1 arg1 ()
它是两个参数,但是如果 arg1 是一个没有参数的函数并且你想调用它,它应该是:
function1 (arg1 ())
我读了 xml 文件,想比较属性值。
let xname name = XName.Get name
let xattr (elem: XElement) (name:string) = elem.Attribute(xname name).Value
let loc (filename:string) (location:string) =
query {
for doc in XDocument.Load(filename).Descendants(xname location) do
where (xattr doc "name").isEqual(location)
select doc
}
在线 where (xattr doc "name").isEqual(location)
编译器抱怨
Successive arguments should be separated by spaces or tupled, and arguments involving function or method applications should be parenthesized
我做错了什么?
好吧,编译器会准确地告诉您需要做什么。
在这种情况下,请遵循第二个提示:带括号的
重写表达式:
(xattr doc "name").isEqual(location)
作为
((xattr doc "name").isEqual(location))
你可能想知道他为什么要我这样做?原因是因为他不知道一个论点是只有一个论点还是有更多的论点。
例如考虑这个函数调用:
function1 arg1 ()
它是两个参数,但是如果 arg1 是一个没有参数的函数并且你想调用它,它应该是:
function1 (arg1 ())