使用这两种方法的利弊是什么


要么

type Complex =
    {
        real: float;
        imag: float;
    }

我对不同情况下的可读性和处理特别感兴趣。
并在较小程度上提高了性能。

最佳答案

使用辅助函数,您可以从两种方法中获得相同的收益。

记录

type ComplexRec =
    {
        real: float
        imag: float
    }

// Conciseness
let buildRec(r,i) =
    { real = r ; imag = i }

let c = buildRec(1.,5.)

// Built-in field acces
c.imag


联合类型

type ComplexUnion =
    Complex of
        real: float * imag: float

// Built-in conciseness
let c = Complex(1.,5.)

// Get field - Could be implemented as members for a more OO feel
let getImag = function
    Complex(_,i) -> i

getImag c


我认为并集类型的(频繁)分解会影响性能,但是我不是这个问题的专家。

07-26 06:13