我只是想将整数列表传递给用 C++ 编写的函数。我已经设置了模板 (.tm) 文件和所有文件,并且可以成功调用带有标量参数的测试函数。使用 list 参数调用函数的行为就好像该函数根本没有定义。我怀疑参数类型不匹配。
在模板文档 (http://reference.wolfram.com/mathematica/ref/file/file.tm.html) 中,列表的数据类型类似于“Int32List”。当我使用它时,我的 C++ 函数必须包含一个用于列表长度的超长参数。唯一使用列表的示例代码是“sumalist.tm”。此示例使用 IntegerList(一种未出现在独库中的类型)。
当我使用 Int32List 时,mprep 结果需要一个带有额外整数参数的函数(不像 doku 中写的那样长)。当我使用未记录的 IntegerList 类型时,额外的参数是 long 类型。
在我对标量类型的实验中,我遇到了类似的问题 - 在 tm 文件中使用“Integer”时正确调用了一个 c++ 函数,而“Integer32”则无法识别。
“sumalist.tm”示例还使用了一个奇怪的 Pattern (list:{___Integer}),我没有找到任何文档。我还想了解 Evaluate 行的含义(我怀疑它用于使函数在列表周围没有大括号的情况下可调用)。
那么谁知道哪些数据类型真正适合用列表调用 c++ 函数 - 也许也可以用实数......?