Return ChaiScript 中有多个值?
Return more than one value in ChaiScript?
在Lua中可以return多个值,例如:
function math.pos(x1, y1, x2, y2)
return x2 - x1, y2 - y1
end
distanceX, distanceY = math.pos(100, 100, 300, 300) --> distanceX = 0, distanceY = 0
我可以在 ChaiScript 中做这样的事情吗?
这在 ChaiScript 中是不可能的,尽管您可以使用包含多个值的结构来伪造它。
你会有一个结构(在 C++ 中)看起来有点像这样:
struct multiple_return_value {
int first;
int second;
multiple_return_value(int a, int b) : first(a), second(b) {}
};
然后像这样用 ChaiScript 注册它:
chai.add(chaiscript::user_type<multiple_return_value>(), "multiple_return_value");
chai.add(chaiscript::constructor<multiple_return_value(int, int)>(), "multiple_return_value");
chai.add(chaiscript::fun(&multiple_return_value::first), "first");
chai.add(chaiscript::fun(&multiple_return_value::second), "second");
那么你可以这样使用它:
def math_pos(x1, x1, y2, y2) {
return multiple_return_value(x2 - x1, y2 - y1);
}
var distance = math_pos(100, 100, 300, 300);
print("distance x: " + to_string(distance.first));
print("distance y: " + to_string(distance.second));
在Lua中可以return多个值,例如:
function math.pos(x1, y1, x2, y2)
return x2 - x1, y2 - y1
end
distanceX, distanceY = math.pos(100, 100, 300, 300) --> distanceX = 0, distanceY = 0
我可以在 ChaiScript 中做这样的事情吗?
这在 ChaiScript 中是不可能的,尽管您可以使用包含多个值的结构来伪造它。
你会有一个结构(在 C++ 中)看起来有点像这样:
struct multiple_return_value {
int first;
int second;
multiple_return_value(int a, int b) : first(a), second(b) {}
};
然后像这样用 ChaiScript 注册它:
chai.add(chaiscript::user_type<multiple_return_value>(), "multiple_return_value");
chai.add(chaiscript::constructor<multiple_return_value(int, int)>(), "multiple_return_value");
chai.add(chaiscript::fun(&multiple_return_value::first), "first");
chai.add(chaiscript::fun(&multiple_return_value::second), "second");
那么你可以这样使用它:
def math_pos(x1, x1, y2, y2) {
return multiple_return_value(x2 - x1, y2 - y1);
}
var distance = math_pos(100, 100, 300, 300);
print("distance x: " + to_string(distance.first));
print("distance y: " + to_string(distance.second));