【发布时间】:2017-02-15 22:44:51
【问题描述】:
为什么在示例 1、2、3 中我没有问题,但示例 3 给了我一个错误,上面写着:
此函数接受的参数过多,或在不期望函数的上下文中使用
let add a b =
a + b
printfn "Example 1: %i" (add 1 2)
let append (list:seq<int>) x =
list.Concat [x]
let count = (append [1;2] 3).Count()
printfn "Example 2: %i" count
printfn "Example 3: %i" (Enumerable.Count(append [1;2] 3))
printfn "Example 4: %i" (append [1;2] 3).Count
【问题讨论】:
-
我怀疑你需要额外的括号(但现在没有编译器要检查)-试试
((append [1;2] 3).Count) -
你忘了括号:
(append [1;2] 3).Count() -
Count()是扩展方法,而不是属性,因此您需要提供()才能调用它。此外,您还需要将整个表达式分组在括号中:((append [1;2] 3).Count())。这是一个解释何时使用括号以及为什么在 F# 中的答案:stackoverflow.com/a/39296035/126014