aardio 文档
aardio 范例: 共享结构体
//共享结构体
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();
Markdown 格式