Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
根据我的阅读,F# 中的函数返回该函数中最后一行的值。那么下面的函数如何返回一个数组呢?
let swap (a: _[]) x y = let tmp = a.[x] a.[x] <- a.[y] a.[y] <- tmp
您发布的函数实际上并没有返回一个数组,它返回一个unit. 这是因为根据运算符unit的设计,最后一行的类型是<-。
unit
<-
您发布的函数不是纯函数,因为它有副作用。交换通过引用发生在数组上,因为 .NET 数组是可变的和引用类型。一个更“纯”的交换函数会在不修改输入数组的情况下生成一个新数组。