考虑以下cython代码片段:
尝试将此内容进行Cython化会引发以下错误:
ctypedef fused number:
int
double
cdef void some_function(void *in_, void *out):
cdef number *fin = <number *> in_
cdef number *fout = <number *> out
if number is int:
fout[0] = fin[0] + fin[1]
else:
fout[0] = fin[0] * fin[1]
尝试将此内容进行Cython化会引发以下错误:
Invalid use of fused types, type cannot be specialized
解决这个问题的一种方法是将融合类型添加到函数的签名中:
cdef void some_function(void *in_, void *out, number *dummy):
...
etc.
这段文本可以翻译,但很难看且不令人满意。
有没有更好的方法呢?