首页 > 解决方案 > Excel Dna / F#中的多态性

问题描述

在 F#/Excel-Dna 中,为字符串向量重写以下函数的惯用方法是什么?(即对字符串的“向量”(=1d Excel 范围)进行排序的函数)。

[<ExcelFunction(Category="Some Cat", Description="Sort 1d range filled with doubles.")>]
    let mySortDouble (vect : double[]) : double[] = 
        Array.sort vect

如果我只是在上面的代码片段中将双精度类型替换为字符串类型,我会收到以下错误消息:Initialization [Error] Method not registered - unsupported signature, abstract or generic: 'MyFSFunctions.mySortString'

我看到了这个先前的问题,Govert 建议使用“注册扩展”,但我还没有找到如何使用它来回答我当前的问题。

标签: f#excel-dna

解决方案


正如您编写的 mySortDouble 一样,它甚至不会编译,因为它返回一个双精度 [],而不是双精度。

这是一个有效的示例,添加了一些最小的错误处理。

[<ExcelFunction(Category="Some Cat", Description="Sort 1D range of strings.")>]
let SortStrings (vect : obj[]) = 
    try
        vect
        |> Seq.cast<string>
        |> Seq.sort
        |> Seq.toArray
        |> box
    with
    | ex -> box ExcelError.ExcelErrorNA

推荐阅读