//共享结构体 import console; import julia; //Julia 内定义一个结构体 julia.eval(" struct B Items::NTuple{3, Int32} function B() return new((1, 2, 3)) end end "); //执行 Julia 代码,并返回结构体对象。 var structObj = julia.evalStruct("structObj = B()",{ int items[3]; //参数 @2 必须指定 aardio 结构体(或结构体类) }); /* structObj 是一个 raw.struct 对象。 对该对象的读写操作都会与 Julia 内存同步。 当然这点性能影响微乎其微,一般可以不管。 将字段值读出来再操作效率会更好。 或者用 structObj.get() structObj.set() 函数也可以。 */ var items = structObj.items; //读数组值 console.log( items[3] ); /* 修改 aardio 结构体会同步修改 Julia 的结构体,两者共享内存 必须读写 structObj 的成员或调用 get,set 函数才会触发 raw.struct 的内存同步操作。 */ structObj.items = {10,20,30} //可以看到 Julia 结构体的值已经被改了 console.log( julia.eval("structObj.Items[3]") ) /* Julia 虽然返回的是结构体指针,并且与 aardio 结构体兼容。 但 Julia 在结构体指针的前面藏了一个类型字段。 所以我们无法将 aardio 创建的结构体直接传给 Julia。 但可以用 aardio 调用 Julia 执行代码并创建结构体。 */ console.pause();