F#新手:为什么这个函数返回数组?

时间:2013-10-19 08:01:44

标签: arrays f#

根据我的阅读,F#中的函数返回该函数中最后一行的值。那么以下函数如何返回一个数组呢?

let swap (a: _[]) x y = 
    let tmp = a.[x]
    a.[x] <- a.[y]
    a.[y] <- tmp

1 个答案:

答案 0 :(得分:2)

您发布的功能实际上并不返回数组,而是返回unit。这是因为根据unit运算符的设计,最后一行的类型为<-

您发布的功能不是纯粹的功能,因为它有副作用。交换通过引用发生在数组上,因为.NET数组是可变的和引用类型。一个更纯粹的&#34; swap函数会生成一个新数组而不修改输入数组。