根据我的阅读,F#中的函数返回该函数中最后一行的值。那么以下函数如何返回一个数组呢?
let swap (a: _[]) x y =
let tmp = a.[x]
a.[x] <- a.[y]
a.[y] <- tmp
答案 0 :(得分:2)
您发布的功能实际上并不返回数组,而是返回unit
。这是因为根据unit
运算符的设计,最后一行的类型为<-
。
您发布的功能不是纯粹的功能,因为它有副作用。交换通过引用发生在数组上,因为.NET数组是可变的和引用类型。一个更纯粹的&#34; swap函数会生成一个新数组而不修改输入数组。