我读了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
我做错了什么?
答案 0 :(得分:3)
编译器正好告诉你你需要做什么。
在这种情况下,请遵循第二个提示:括号
重写表达式:
(xattr doc "name").isEqual(location)
作为
((xattr doc "name").isEqual(location))
你可能想知道他为什么要我这样做?原因是因为他不知道论证只是一个论点,还是有更多论点。
例如考虑这个函数调用:
function1 arg1 ()
这是两个参数,但是如果arg1是一个没有参数的函数而你想调用它,它应该是:
function1 (arg1 ())