首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ChaiScript中返回多个值?

在ChaiScript中返回多个值?
EN

Stack Overflow用户
提问于 2020-09-08 05:15:59
回答 1查看 163关注 0票数 2

在Lua中,可以返回多个值,例如:

代码语言:javascript
复制
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中做这样的事情吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-14 07:50:50

这在ChaiScript中是不可能的,尽管您可以使用包含多个值的结构来伪造它。

您将有一个结构(在C++中),它看起来有点像这样:

代码语言:javascript
复制
struct multiple_return_value {
    int first;
    int second;
    multiple_return_value(int a, int b) : first(a), second(b) {}
};

然后将其注册到ChaiScript,如下所示:

代码语言:javascript
复制
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");

然后你可以像这样使用它:

代码语言:javascript
复制
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));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63787495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档