0

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

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

1 回答 1

2

您发布的函数实际上并没有返回一个数组,它返回一个unit. 这是因为根据运算符unit的设计,最后一行的类型是<-

您发布的函数不是纯函数,因为它有副作用。交换通过引用发生在数组上,因为 .NET 数组是可变的和引用类型。一个更“纯”的交换函数会在不修改输入数组的情况下生成一个新数组。

于 2013-10-19T08:20:43.583 回答