f# - 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 建议使用“注册扩展”,但我还没有找到如何使用它来回答我当前的问题。
解决方案
正如您编写的 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
推荐阅读
- sqlite - 在单个查询中创建嵌套语句的问题
- python-sphinx - Sphinx:链接到原始源文件而不是副本
- karma-runner - Angular 单元测试仅在构建服务器上失败
- python-3.x - Tkinter - Optionmenu - 用户单击下拉框时是否可以更改指示箭头?
- bitbucket-pipelines - 如何将 nrwl nx 工具(用于角度)与 bitbucket 管道一起使用以利用受影响的 nx?
- r - 在拼凑中定位ggplots
- reactjs - Shopify webhook 什么都不给我?
- react-native - 从 react-native 在浏览器中打开非标准协议 url
- python - 将 OpenCV 图像从 C++ 发送到 Python 错误
- ffmpeg - FFmpeg - 如何将原始屏幕缓冲区(帧数组)编码为比特流?