NativeCall 子绑定中的“传递的位置太多”

jjm*_*elo 7 nativecall raku

我有这个定义:

use NativeCall;

unit module kazmath;

class mat4 is repr('CStruct') {
    HAS num32 @.mat[16] is CArray;
}

sub kmMat4Fill( mat4 $mat, num32 @filler ) returns mat4 is native('kazmath')
                                            is export {*}
Run Code Online (Sandbox Code Playgroud)

要绑定的函数在此处定义

kmMat4* kmMat4Fill(kmMat4* pOut, const kmScalar* pMat);
Run Code Online (Sandbox Code Playgroud)

返回的错误是:

Too many positionals passed; expected 2 arguments but got 3
Run Code Online (Sandbox Code Playgroud)

我实在想不通。

jjm*_*elo 5

这是固定的

sub kmMat4Fill( mat4 $mat, CArray[num32] $filler )
        returns mat4 is native('kazmath') is export {*}
Run Code Online (Sandbox Code Playgroud)

不能在 NativeCall 中使用 Positionals,但错误消息仍然是 LTA(Less Than Awesome)。

  • 对于所有...我主要将“LTA”与对最终用户和实施者都具有同理心的概念联系起来,这是一种令人振奋的“抱负”内涵,即某些错误消息很弱,甚至非常弱,需要改进,也许是很多。有点像“LTA eqv Larry.Thinks.Aspirationally”。但“@Larry”模因的部分要点是艺术灵活性,我发现这很有趣:记住我忘记的关于模因的内容;发现我不知道的意义;发明新的;或分享我认为可能适用于特定场景的内容。本着这样的精神:“LTA eqv 荒唐、折磨、深奥”。 (3认同)