【问题标题】:Polymorphism in Excel Dna / F#Excel Dna / F#中的多态性
【发布时间】:2019-04-06 06:30:46
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: f# excel-dna


    【解决方案1】:

    因为你已经编写了 mySortDouble,它甚至不会编译,因为它返回一个 double[],而不是一个 double。

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

    [<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
    

    【讨论】:

      【解决方案2】:

      For Registration samples

      ParameterConversionConfiguration() .AddReturnConversion(fun (values: double[]) -> Array.map (string >> box) values )

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-02
        • 1970-01-01
        • 1970-01-01
        • 2015-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多