缺少方法应用程序应该括起来

时间:2015-02-25 08:11:40

标签: f#

我读了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

我做错了什么?

1 个答案:

答案 0 :(得分:3)

编译器正好告诉你你需要做什么。

在这种情况下,请遵循第二个提示:括号

重写表达式:

(xattr doc "name").isEqual(location)

作为

((xattr doc "name").isEqual(location))

你可能想知道他为什么要我这样做?原因是因为他不知道论证只是一个论点,还是有更多论点。

例如考虑这个函数调用:

function1 arg1 ()

这是两个参数,但是如果arg1是一个没有参数的函数而你想调用它,它应该是:

function1 (arg1 ())