2010-08-25 36 views
0
let sub (a:float[]) (b:float[])= 
    [| for i = 0 to Array.length a - 1 do yield a.[i]-b.[i] |] 

let fx t = [0..t] 
let x=sub (fx t) (fx t) 

上面编译好的。函数不应该是参数吗?

但是,同样会导致错误,当我用一个方法调用替换函数调用:

type type_f = delegate of float -> float[] 
let mutable f =new type_f(fun t->[|0..t|]) 
let m=f.Invoke(5) //float[] 
let y=sub m f.Invoke(5)//error 

我如何通过一个方法调用作为参数传递给函数的结果呢?

+0

不是很讨厌,但考虑到你刚刚发布了3个问题,所有关于一个小snippe t代码也许会花费一些时间阅读F#wikibook或其他一些关于基本F#语法的书。可能你想研究语言语法多一点? – 2010-08-25 15:28:18

回答

4

在F#,线

let y = sub m f.Invoke(5) 

含糊解析作为

let y = sub m f.Invoke (5) 

(通过三个参数sub)。

要解决这个问题,你需要更多的括号:

let y = sub m (f.Invoke(5)) 

(请注意,使用delegate类型是不地道的,除非有其他语言的.NET代码互操作如果f是一个函数,然后

let y = sub m (f 5) 

就足够了,因为你已经注意到了。)

+0

@感谢,与C#合作。 – Begtostudy 2010-08-25 09:52:15

相关问题